Не формируются документы с помощью Таблицы Значений (1С 7.7)

  • Автор темы BBDragon
  • Дата начала
B

BBDragon

Необходимо переделать программу в соответствии с новыми требованиями (изменилась структура входящих и, соответственно, формируемых на их основе исходящих документов). Часть работы удалось сделать, но теперь я застрял. Необходимо из загружаемых документов создавать новые, при этом вести разбивку по регионам, т.е. для каждого региона создавать отдельный документ со списком всех пациентов за указанный период. Внутри документа желательно расположить пациентов в алфавитном порядке их фамилий. Подозреваю, что проблема в оформлении группировок запроса, но никак не могу докопаться до истины..

[codebox]
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|ДатаДок = Документ.РеестрСчетовВходящийЛПУ.ДатаДок;
|НомерДок = Документ.РеестрСчетовВходящийЛПУ.НомерДок;
|КодТерритории = Документ.РеестрСчетовВходящийЛПУ.ОкатоВыстСчет;
|ОкатоРегистрации = Документ.РеестрСчетовВходящийЛПУ.ОкатоРегистрации;
|ОкатоСтрахования = Документ.РеестрСчетовВходящийЛПУ.ОкатоСтрахования;
|СтатусДокумента1 = Документ.РеестрСчетовВходящийЛПУ.СтатусДокумента;
|НомерКвартала = Документ.РеестрСчетовВходящийЛПУ.НомерКвартала;
|СерияНомерПолиса = Документ.РеестрСчетовВходящийЛПУ.СерияНомерПолиса;
|ДатаВыдачиПолиса = Документ.РеестрСчетовВходящийЛПУ.ДатаВыдачиПолиса;
|ДатаОкончанияПолиса = Документ.РеестрСчетовВходящийЛПУ.ДатаОкончанияПолиса;
|Регион=Документ.РеестрСчетовВходящийЛПУ.Регион;
|ФамилияПациента = Документ.РеестрСчетовВходящийЛПУ.ФамилияПациента;
|ИмяПациента = Документ.РеестрСчетовВходящийЛПУ.ИмяПациента;
|ОтчествоПациента = Документ.РеестрСчетовВходящийЛПУ.ОтчествоПациента;
|ПолПациента = Документ.РеестрСчетовВходящийЛПУ.ПолПациента;
|ДатаРожденияПациента = Документ.РеестрСчетовВходящийЛПУ.ДатаРожденияПациента;
|СтатусПредставителя = Документ.РеестрСчетовВходящийЛПУ.СтатусПредставителя;
|ФамилияПредставителя = Документ.РеестрСчетовВходящийЛПУ.ФамилияПредставителя;
|ИмяПредставителя = Документ.РеестрСчетовВходящийЛПУ.ИмяПредставителя;
|ОтчествоПредставителя = Документ.РеестрСчетовВходящийЛПУ.ОчествоПредставителя;
|ОГРНСМО = Документ.РеестрСчетовВходящийЛПУ.ОГРНСМО;
|Гражданство = Документ.РеестрСчетовВходящийЛПУ.Гражданство;
|КодДокумента = Документ.РеестрСчетовВходящийЛПУ.КодДокумента;
|СерияДокумента = Документ.РеестрСчетовВходящийЛПУ.СерияДокумента;
|НомерДокумента = Документ.РеестрСчетовВходящийЛПУ.НомерДокумента;
|Район = Документ.РеестрСчетовВходящийЛПУ.Район;
|КодНП = Документ.РеестрСчетовВходящийЛПУ.КодНП;
|НаселенныйПункт = Документ.РеестрСчетовВходящийЛПУ.НаселенныйПункт;
|КодУлицы = Документ.РеестрСчетовВходящийЛПУ.КодУлицы;
|Улица = Документ.РеестрСчетовВходящийЛПУ.Улица;
|Дом = Документ.РеестрСчетовВходящийЛПУ.Дом;
|Корпус = Документ.РеестрСчетовВходящийЛПУ.Корпус;
|Квартира = Документ.РеестрСчетовВходящийЛПУ.Квартира;
|СтатусЗастрахованного = Документ.РеестрСчетовВходящийЛПУ.СтатусЗастрахованного;
|МестоРаботы = Документ.РеестрСчетовВходящийЛПУ.МестоРаботы;
|ДатаНачалаЛечения = Документ.РеестрСчетовВходящийЛПУ.ДатаНачалаЛечения;
|ДатаОкончанияЛечения = Документ.РеестрСчетовВходящийЛПУ.ДатаОкончанияЛечения;
|ВидМедицинскойПомощи = Документ.РеестрСчетовВходящийЛПУ.ВидМедицинскойПомощи;
|КодПрофиля = Документ.РеестрСчетовВходящийЛПУ.КодПрофиля;
|КодСпециальности = Документ.РеестрСчетовВходящийЛПУ.КодСпециальности;
|КодОсновногоЗаболевания = Документ.РеестрСчетовВходящийЛПУ.КодОсновногоЗаболевания;
|КодСопутствующегоЗаболевания =
Документ.РеестрСчетовВходящийЛПУ.КодСопутствующегоЗаболевания;
|ИсходЗаболевания = Документ.РеестрСчетовВходящийЛПУ.ИсходЗаболевания;
|ОгрнЛПУ = Документ.РеестрСчетовВходящийЛПУ.ОгрнЛПУ;
|СуммаКОплате = Документ.РеестрСчетовВходящийЛПУ.СуммаКОплате;
|ПорядковыйНомер = Документ.РеестрСчетовВходящийЛПУ.ПорядковыйНомер;
|КодПричины = Документ.РеестрСчетовВходящийЛПУ.КодПричины;
|ПризнакОсобыйСлучай = Документ.РеестрСчетовВходящийЛПУ.ПризнакОсобыйСлучай;

|НаименованиеСтраховщика = Документ.РеестрСчетовВходящийЛПУ.НаименованиеСтраховщика;
|Количество = Документ.РеестрСчетовВходящийЛПУ.Количество;
|Функция СуммаКОплатеСумма = Сумма(СуммаКОплате);
|Функция КоличествоСумма = Сумма(Количество);
|Группировка ОкатоСтрахования;
|Группировка ФамилияПациента;

|Условие(КодПричины = 0);
|Условие(СтатусДокумента1 = Перечисление.СтатусДокумента.ПроизведенаОплата);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;


Пока Запрос.Группировка(1) = 1 Цикл
Док=СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
Док.Новый();
Док.ДатаДок=ТекущаяДата();

Док.КодТерритории=Запрос.КодТерритории;
Док.ВыбНачПериода=ВыбНачПериода;
Док.ВыбКонПериода=ВыбКонПериода;

Пока Запрос.Группировка(2) = 1 Цикл

Док.НоваяСтрока();
Док.ОкатоРегистрации = Запрос.ОкатоРегистрации;
Док.ОкатоСтрахования = Запрос.ОкатоСтрахования;
Док.СерияНомерПолиса = Запрос.СерияНомерПолиса;
Док.ДатаВыдачиПолиса = Запрос.ДатаВыдачиПолиса;
Док.ДатаОкончанияПолиса = Запрос.ДатаОкончанияПолиса;
Док.ФамилияПациента = Запрос.ФамилияПациента;
Док.ИмяПациента = Запрос.ИмяПациента;
Док.ОтчествоПациента = Запрос.ОтчествоПациента;
Док.ПолПациента = Запрос.ПолПациента;
Док.ДатаРожденияПациента = Запрос.ДатаРожденияПациента;
Док.СтатусПредставителя = Запрос.СтатусПредставителя;
Док.ФамилияПредставителя = Запрос.ФамилияПредставителя;
Док.ИмяПредставителя = Запрос.ИмяПредставителя;
Док.ОтчествоПредставителя = Запрос.ОтчествоПредставителя;
Док.ОГРНСМО = Запрос.ОГРНСМО;
Док.Гражданство = Запрос.Гражданство;
Док.КодДокумента = Запрос.КодДокумента;
Док.СерияДокумента = Запрос.СерияДокумента;
Док.НомерДокумента = Запрос.НомерДокумента;
Док.Район = Запрос.Район;
Док.КодНП = Запрос.КодНП;
Док.НаселенныйПункт = Запрос.НаселенныйПункт;
Док.КодУлицы = Запрос.КодУлицы;
Док.Улица = Запрос.Улица;
Док.Дом = Запрос.Дом;
Док.Корпус = Запрос.Корпус;
Док.Квартира = Запрос.Квартира;
Док.СтатусЗастрахованного = Запрос.СтатусЗастрахованного;
Док.МестоРаботы = Запрос.МестоРаботы;
Док.ДатаНачалаЛечения = Запрос.ДатаНачалаЛечения;
Док.ДатаОкончанияЛечения = Запрос.ДатаОкончанияЛечения;
Док.ВидМедицинскойПомощи = Запрос.ВидМедицинскойПомощи;
Док.КодПрофиля = Запрос.КодПрофиля;
Док.КодСпециальности = Запрос.КодСпециальности;
Док.КодОсновногоЗаболевания = Запрос.КодОсновногоЗаболевания;
Док.КодСопутствующегоЗаболевания = Запрос.КодСопутствующегоЗаболевания;
Док.ИсходЗаболевания = Запрос.ИсходЗаболевания;
Док.ОгрнЛПУ = Запрос.ОгрнЛПУ;
Док.СуммаКОплате = Запрос.СуммаКОплате;
Док.ПорядковыйНомер = Запрос.ПорядковыйНомер;
Док.КодПричины= Запрос.КодПричины;
Док.ПризнакОсобыйСлучай = Запрос.ПризнакОсобыйСлучай;
КонецЦикла;

Док.Записать();
Док.Провести();
КонецЦикла;
Сообщить("Конец формирования реестров счетов исходящих");

КонецПроцедуры

[/codebox]
 
V

vbs

Зря с запросом связался - гораздо проще перебрать документы по условию, собрать нужные в таблицу и по окончании перебора создать
новый документ. И код будет куда короче и быстрее
 
B

BBDragon

Уважаемый vbs, очень прошу вас, приведите шаблон, пожалуйста :rolleyes:
Код региона содержится в переменной ОкатоСтрахования
 
V

vbs

Doc = СоздатьДокумент("РеестрСчетовВходящийЛПУ");
Doc.ВыбратьДокументы(Дата1,Дата2);
Пока Doc.ПолучитьДокумент() = 1 Цикл
Если Doc.ОкатоСтрахования <> ВыбранныйОкатоСтрахования тогда
Продолжить
КонецЕсли;
Если //не выполняется условие по пациенту тогда
Продолжить
КонецЕсли;
Doc.ВыгрузитьТабличнуюЧасть(ТЗ); // если нужные данные в ТЧ
// Обеспечить добавление ТЧ документа в общую ТЗ
КонецЦикла;
Вариант : можно создать нужный список документов запросом с фильтром, а потом уже обрабатывать собранные запросом данные

Примерно так
 
B

BBDragon

Создал процедуру Сформировать:

Процедура Сформировать()
СпрОкато=СоздатьОбъект(Справочник.КодыОкато); // справочник с кодами ОКАТО
СпрОкато.ВыбратьЭлементы();
Пока СпрОкато.ПолучитьЭлемент() = 1 Цикл
ВыбранноеОкато = СпрОкато.ТекущийЭлемент();
Doc = СоздатьДокумент("РеестрСчетовВходящийЛПУ");
Doc.ВыбратьДокументы(ВыбНачПериода,ВыбНачПериода);
Пока Doc.ПолучитьДокумент() = 1 Цикл
ВыбратьСтроки();
Пока ПолучитьСтроку()>0 Цикл
Если Doc.ОкатоСтрахования = ВыбранноеОкато тогда
//заносим эту строку в ТЗ
КонецЕсли;
КонецЦикла;
Doc.ВыгрузитьТабличнуюЧасть(ТЗ); // если нужные данные в ТЧ
// Обеспечить добавление ТЧ документа в общую ТЗ
КонецЦикла;
DocTFOMS = СоздатьДокумент("РеестрСчетовИсходящийВТФОМС");
// заполняем документ списком пациентов из этого региона
КонецЦикла;

Сообщить("Конец формирования реестров счетов исходящих");
КонецПроцедуры

Алгоритм такой - перебираем все возможные коды ОКАТО по одному в цикле, далее выбираем все документы вида РеестрСчетовВходящийЛПУ в этом периоде и просматриваем по строкам. Если регион пациента совпадает с выбранным ОКАТО, то заносим его данные в Таблицу значений. После того как пробежались по всем документам за период формируем новый документ - РеестрСчетовИсходящийВТФОМС и заносим в него данные из ТЗ. Не могу разобраться как заносить и выгружать данные в ТЗ, подскажите еще немного, пожалуйста :rolleyes:
 
V

vbs

Если в таблице документа разные ОКАТО, делаешь так :
// ОТЗ - полная ТЗ
// ТЗ - табл.часть конкретного документа
N = 0;
Пока Doc.ПолучитьДокумент() = 1 Цикл
Doc.ВыгрузитьТабличнуюЧасть(ТЗ);
// Обеспечить добавление ТЧ документа в общую ТЗ
ТЗ.ВыбратьСтроки();
k = 0;
Пока ТЗ.ПолучитьСтроку() = 1 цикл
k = k + 1;
Если // проверяем условие Тогда
ОТЗ.НоваяСтрока();
N = N +1:
для m = 1 по ТЗ.КоличествоКолонок цикл
ОТЗ.УстановитьЗначение(N,m,ТЗ.ПолучитьЗначение(k,m))
конецЕсли;
КонецЦикла;
КонецЦикла;

Cинтаксис уточни сам
 
V

vbs

СпрОкато=СоздатьОбъект(Справочник.КодыОкато); // справочник с кодами ОКАТО
СпрОкато.ВыбратьЭлементы();
Пока СпрОкато.ПолучитьЭлемент() = 1 Цикл
Это плохой стиль.
Ты перебираешь документы столько раз, сколько элементов в справочнике.
Лучше это делать за один проход.
Например, так : создать несколько таблиц значений и по коду ОКАТО добавлять в нужную
 
B

BBDragon

Это плохой стиль.
Ты перебираешь документы столько раз, сколько элементов в справочнике.
Лучше это делать за один проход.
Например, так : создать несколько таблиц значений и по коду ОКАТО добавлять в нужную


Я прекрасно понимаю это, но пока хотя бы так, оптимизировать алгоритм буду потом. Документы наконец-то стали формироваться (ура!), но, к огромному моему сожалению, они совершенно пустые!

[codebox]
Процедура Сформировать()
СпрОкато = СоздатьОбъект("Справочник.КодТерритории"); // справочник с кодами ОКАТО
СпрОкато.ВыбратьЭлементы();
Пока СпрОкато.ПолучитьЭлемент() = 1 Цикл
ВыбранноеОкато = СпрОкато.ТекущийЭлемент();
Doc = СоздатьОбъект("Документ.РеестрСчетовВходящийЛПУ");
Doc.ВыбратьДокументы(ВыбНачПериода,ВыбНачПериода);
N = 0;
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ОТЗ = СоздатьОбъект("ТаблицаЗначений");
Пока Doc.ПолучитьДокумент() = 1 Цикл
Doc.ВыгрузитьТабличнуюЧасть(ТЗ);
// Обеспечить добавление ТЧ документа в общую ТЗ
DocTFOMS = СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
DocTFOMS.Новый();
ОТЗ.НоваяКолонка("Номер", "Число",4,0);
ОТЗ.НоваяКолонка("ОкатоСтрахования", "Строка",5);
ОТЗ.НоваяКолонка("Фамилия", "Строка",40);
ОТЗ.НоваяКолонка("Имя", "Строка",40);
ОТЗ.НоваяКолонка("Отчество", "Строка",40);
ОТЗ.НоваяКолонка("Пол", "Строка",1);
ОТЗ.НоваяКолонка("ДатаРождения", "Дата");
ОТЗ.НоваяКолонка("КодДокумента", "Число",2,0);
ОТЗ.НоваяКолонка("СерияДокумента", "Строка",9);
ОТЗ.НоваяКолонка("НомерДокумента", "Строка",8);
ОТЗ.НоваяКолонка("СерияНомерПолиса", "Строка",25);
ОТЗ.НоваяКолонка("ДатаВыдачиПолиса", "Дата");
ОТЗ.НоваяКолонка("ДатаОкончанияПолиса", "Дата");
ОТЗ.НоваяКолонка("СтатусПредставителя", "Число",1,0);
ОТЗ.НоваяКолонка("ФамилияПредставителя", "Строка",40);
ОТЗ.НоваяКолонка("ИмяПредставителя", "Строка",40);
ОТЗ.НоваяКолонка("ОтчествоПредставителя", "Строка",40);
ОТЗ.НоваяКолонка("ОГРНСМО", "Строка",15);
ОТЗ.НоваяКолонка("Гражданство", "Строка",3);
ОТЗ.НоваяКолонка("НаименованиеРайона", "Строка",150);
ОТЗ.НоваяКолонка("КодНП", "Число",3,0);
ОТЗ.НоваяКолонка("НаселенныйПункт", "Строка",150);
ОТЗ.НоваяКолонка("КодУлицы", "Число",3,0);
ОТЗ.НоваяКолонка("Улица", "Строка",150);
ОТЗ.НоваяКолонка("Дом", "Строка",7);
ОТЗ.НоваяКолонка("Корпус", "Строка",5);
ОТЗ.НоваяКолонка("Квартира", "Строка",5);
ОТЗ.НоваяКолонка("СтатусЗастрахованного", "Число",2,0);
ОТЗ.НоваяКолонка("МестоРаботы", "Строка",150);
ОТЗ.НоваяКолонка("ДатаНачалаЛечения", "Дата");
ОТЗ.НоваяКолонка("ДатаОкончанияЛечения", "Дата");
ОТЗ.НоваяКолонка("ВидМедицинскойПомощи", "Число",1,0);
ОТЗ.НоваяКолонка("КодПрофиля", "Число",2,0);
ОТЗ.НоваяКолонка("КодСпециальности", "Строка",9);
ОТЗ.НоваяКолонка("КодОсновногоЗаболевания", "Строка",7);
ОТЗ.НоваяКолонка("КодСопутствующегоЗаболевания", "Строка",7);
ОТЗ.НоваяКолонка("ИсходЗаболевания", "Число",2,0);
ОТЗ.НоваяКолонка("ОГРНЛПУ", "Строка",15);
ОТЗ.НоваяКолонка("СуммаКОплате", "Число",11,2);
ОТЗ.НоваяКолонка("ПорядковыйНомер", "Число",5,0);
ОТЗ.НоваяКолонка("КодПричины", "Строка",8);
ОТЗ.НоваяКолонка("ПризнакОсобыйСлучай", "Строка",7);
ТЗ.ВыбратьСтроки();
k = 0;
Пока ТЗ.ПолучитьСтроку() = 1 цикл
k = k + 1;
Если ТЗ.ОкатоСтрахования = ВыбранноеОкато Тогда
ОТЗ.НоваяСтрока();
N = N +1;
для m = 1 по ТЗ.КоличествоКолонок цикл
ОТЗ.УстановитьЗначение(N,m,ТЗ.ПолучитьЗначение(k,m))
КонецЦикла;
КонецЕсли;
КонецЦикла;
ОТЗ.ВыбратьСтроки();
k=1;
Пока ОТЗ.ПолучитьСтроку() = 1 цикл
DocTFOMS.НоваяСтрока();
DocTFOMS.НомерСтроки=k;
DocTFOMS.ОкатоСтрахования=ОТЗ.ОкатоСтрахования;
DocTFOMS.ФамилияПациента=ОТЗ.Фамилия;
DocTFOMS.ИмяПациента=ОТЗ.Имя;
DocTFOMS.ОтчествоПациента=ОТЗ.Отчество;
DocTFOMS.ПолПациента=ОТЗ.Пол;
DocTFOMS.ДатаРожденияПациента=ОТЗ.ДатаРождения;
DocTFOMS.КодДокумента=ОТЗ.КодДокумента;
DocTFOMS.СерияДокумента=ОТЗ.СерияДокумента;
DocTFOMS.НомерДокумента=ОТЗ.НомерДокумента;
DocTFOMS.СерияНомерПолиса=ОТЗ.СерияНомерПолиса;
DocTFOMS.ДатаВыдачиПолиса=ОТЗ.ДатаВыдачиПолиса;
DocTFOMS.ДатаОкончанияПолиса=ОТЗ.ДатаОкончанияПолиса;
DocTFOMS.СтатусПредставителя=ОТЗ.СтатусПредставителя;
DocTFOMS.ФамилияПредставителя=ОТЗ.ФамилияПредставителя;
DocTFOMS.ИмяПредставителя=ОТЗ.ИмяПредставителя;
DocTFOMS.ОтчествоПредставителя=ОТЗ.ОтчествоПредставителя;
DocTFOMS.ОГРНСМО=ОТЗ.ОГРНСМО;
DocTFOMS.Гражданство=ОТЗ.Гражданство;
DocTFOMS.НаименованиеРайона=ОТЗ.НаименованиеРайона;
DocTFOMS.КодНП=ОТЗ.КодНП;
DocTFOMS.НаселенныйПункт=ОТЗ.НаселенныйПункт;
DocTFOMS.КодУлицы=ОТЗ.КодУлицы;
DocTFOMS.Улица=ОТЗ.Улица;
DocTFOMS.Дом=ОТЗ.Дом;
DocTFOMS.Корпус=ОТЗ.Корпус;
DocTFOMS.Квартира=ОТЗ.Квартира;
DocTFOMS.СтатусЗастрахованного=ОТЗ.СтатусЗастрахованного;
DocTFOMS.МестоРаботы=ОТЗ.МестоРаботы;
DocTFOMS.ДатаНачалаЛечения=ОТЗ.ДатаНачалаЛечения;
DocTFOMS.ДатаОкончанияЛечения=ОТЗ.ДатаОкончанияЛечения;
DocTFOMS.ВидМедициснкойПомощи=ОТЗ.ВидМедициснкойПомощи;
DocTFOMS.КодПрофиля=ОТЗ.КодПрофиля;
DocTFOMS.КодСпециальности=ОТЗ.КодСпециальности;
DocTFOMS.КодОсновногоЗаболевания=ОТЗ.КодОсновногоЗаболевания;
DocTFOMS.КодСопутствующегоЗаболевания=ОТЗ.КодСопутствующегоЗаболевания;
DocTFOMS.ИсходЗаболевания=ОТЗ.ИсходЗаболевания;
DocTFOMS.ОГРНЛПУ=ОТЗ.ОГРНЛПУ;
DocTFOMS.СуммаКОплате=ОТЗ.СуммаКОплате;
DocTFOMS.ПорядковыйНомер=ОТЗ.ПорядковыйНомер;
DocTFOMS.КодПричины=ОТЗ.КодПричины;
DocTFOMS.ПризнакОсобыйСлучай=ОТЗ.ПризнакОсобыйСлучай;
КонецЦикла;
КонецЦикла;
DocTFOMS.Записать();
DocTFOMS.Провести();
КонецЦикла;
Сообщить("Конец формирования реестров счетов исходящих");
КонецПроцедуры
[/codebox]

Проблема заключается в загрузке и выгрузке данных в ОТЗ (общая таблица значений). Никак не могу понять как правильно сделать это, совсем уже запутался :)
 
V

vbs

Если исходный и новый документы имеют одинаковую структуру, совершенно нет необходимости
организовывать ОТЗ путем создания новых колонок, тем более, в цикле (видимо, здесь основная ошибка)
Сделай примерно так :
Счетчик = 0;
DocTFOMS = СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
Пока Doc.ПолучитьДокумент() = 1 Цикл
Счетчик = Счетчик + 1;
Doc.ВыгрузитьТабличнуюЧасть(ТЗ);
если Счетчик = 1 тогда
ТЗ.Выгрузить(ОТЗ); // Будет создана Таблица значений той же структуры (колонки)
ОТЗ.УдалитьСтроки(); // очищаем 1 раз ОТЗ, далее она будет только пополняться
N = 0;
КонецЕсли;
ТЗ.ВыбратьСтроки();
k = 0;
Пока ТЗ.ПолучитьСтроку() = 1 цикл
k = k + 1;
Если ТЗ.ОкатоСтрахования = ВыбранноеОкато Тогда
ОТЗ.НоваяСтрока();
N = N +1;
для m = 1 по ТЗ.КоличествоКолонок цикл
ОТЗ.УстановитьЗначение(N,m,ТЗ.ПолучитьЗначение(k,m))
КонецЦикла;
КонецЕсли;
КонецЦикла;
DocTFOMS.Новый();
DocTFOMS.ЗагрузитьТабличнуюЧасть(ОТЗ);
DocTFOMS.Записать(); // и т.д.
 
B

BBDragon

Уважаемый vbs, сделал все так - но опять то же самое, документы пустые(
У документов одинаковая табличная часть, но шапки различаются.

P.S. Внес значительные изменения в код, теперь данные в ТЗ выгружаются (раньше было пусто). Но в документы все равно не могу занести данные(

[codebox]
Процедура Сформировать()
Перем ТЗ, ОТЗ;
ТЗ = СоздатьОбъект(\"ТаблицаЗначений\");// Таблица значений для данных 1 документа
ОТЗ = СоздатьОбъект(\"ТаблицаЗначений\"); // Общая таблица значений с данными всех пациентов отдельного региона

// создаем набор колонок для ТЗ
ТЗ.НоваяКолонка(\"Номер\", \"Число\",4,0);
ТЗ.НоваяКолонка(\"ОкатоСтрахования\", \"Строка\",5);
ТЗ.НоваяКолонка(\"Фамилия\", \"Строка\",40);
ТЗ.НоваяКолонка(\"Имя\", \"Строка\",40);
ТЗ.НоваяКолонка(\"Отчество\", \"Строка\",40);
ТЗ.НоваяКолонка(\"Пол\", \"Строка\",1);
ТЗ.НоваяКолонка(\"ДатаРождения\", \"Дата\");
ТЗ.НоваяКолонка(\"КодДокумента\", \"Число\",2,0);
ТЗ.НоваяКолонка(\"СерияДокумента\", \"Строка\",9);
ТЗ.НоваяКолонка(\"НомерДокумента\", \"Строка\",8);
ТЗ.НоваяКолонка(\"СерияНомерПолиса\", \"Строка\",25);
ТЗ.НоваяКолонка(\"ДатаВыдачиПолиса\", \"Дата\");
ТЗ.НоваяКолонка(\"ДатаОкончанияПолиса\", \"Дата\");
ТЗ.НоваяКолонка(\"СтатусПредставителя\", \"Число\",1,0);
ТЗ.НоваяКолонка(\"ФамилияПредставителя\", \"Строка\",40);
ТЗ.НоваяКолонка(\"ИмяПредставителя\", \"Строка\",40);
ТЗ.НоваяКолонка(\"ОтчествоПредставителя\", \"Строка\",40);
ТЗ.НоваяКолонка(\"ОГРНСМО\", \"Строка\",15);
ТЗ.НоваяКолонка(\"Гражданство\", \"Строка\",3);
ТЗ.НоваяКолонка(\"НаименованиеРайона\", \"Строка\",150);
ТЗ.НоваяКолонка(\"КодНП\", \"Число\",3,0);
ТЗ.НоваяКолонка(\"НаселенныйПункт\", \"Строка\",150);
ТЗ.НоваяКолонка(\"КодУлицы\", \"Число\",3,0);
ТЗ.НоваяКолонка(\"Улица\", \"Строка\",150);
ТЗ.НоваяКолонка(\"Дом\", \"Строка\",7);
ТЗ.НоваяКолонка(\"Корпус\", \"Строка\",5);
ТЗ.НоваяКолонка(\"Квартира\", \"Строка\",5);
ТЗ.НоваяКолонка(\"СтатусЗастрахованного\", \"Число\",2,0);
ТЗ.НоваяКолонка(\"МестоРаботы\", \"Строка\",150);
ТЗ.НоваяКолонка(\"ДатаНачалаЛечения\", \"Дата\");
ТЗ.НоваяКолонка(\"ДатаОкончанияЛечения\", \"Дата\");
ТЗ.НоваяКолонка(\"ВидМедицинскойПомощи\", \"Число\",1,0);
ТЗ.НоваяКолонка(\"КодПрофиля\", \"Число\",2,0);
ТЗ.НоваяКолонка(\"КодСпециальности\", \"Строка\",9);
ТЗ.НоваяКолонка(\"КодОсновногоЗаболевания\", \"Строка\",7);
ТЗ.НоваяКолонка(\"КодСопутствующегоЗаболевания\", \"Строка\",7);
ТЗ.НоваяКолонка(\"ИсходЗаболевания\", \"Число\",2,0);
ТЗ.НоваяКолонка(\"ОГРНЛПУ\", \"Строка\",15);
ТЗ.НоваяКолонка(\"СуммаКОплате\", \"Число\",11,2);
ТЗ.НоваяКолонка(\"ПорядковыйНомер\", \"Число\",5,0);
ТЗ.НоваяКолонка(\"КодПричины\", \"Строка\",8);
ТЗ.НоваяКолонка(\"ПризнакОсобыйСлучай\", \"Строка\",7);

// аналогичный набор колонок создаем и для ОТЗ
ОТЗ.НоваяКолонка(\"Номер\", \"Число\",4,0);
ОТЗ.НоваяКолонка(\"ОкатоСтрахования\", \"Строка\",5);
ОТЗ.НоваяКолонка(\"Фамилия\", \"Строка\",40);
ОТЗ.НоваяКолонка(\"Имя\", \"Строка\",40);
ОТЗ.НоваяКолонка(\"Отчество\", \"Строка\",40);
ОТЗ.НоваяКолонка(\"Пол\", \"Строка\",1);
ОТЗ.НоваяКолонка(\"ДатаРождения\", \"Дата\");
ОТЗ.НоваяКолонка(\"КодДокумента\", \"Число\",2,0);
ОТЗ.НоваяКолонка(\"СерияДокумента\", \"Строка\",9);
ОТЗ.НоваяКолонка(\"НомерДокумента\", \"Строка\",8);
ОТЗ.НоваяКолонка(\"СерияНомерПолиса\", \"Строка\",25);
ОТЗ.НоваяКолонка(\"ДатаВыдачиПолиса\", \"Дата\");
ОТЗ.НоваяКолонка(\"ДатаОкончанияПолиса\", \"Дата\");
ОТЗ.НоваяКолонка(\"СтатусПредставителя\", \"Число\",1,0);
ОТЗ.НоваяКолонка(\"ФамилияПредставителя\", \"Строка\",40);
ОТЗ.НоваяКолонка(\"ИмяПредставителя\", \"Строка\",40);
ОТЗ.НоваяКолонка(\"ОтчествоПредставителя\", \"Строка\",40);
ОТЗ.НоваяКолонка(\"ОГРНСМО\", \"Строка\",15);
ОТЗ.НоваяКолонка(\"Гражданство\", \"Строка\",3);
ОТЗ.НоваяКолонка(\"НаименованиеРайона\", \"Строка\",150);
ОТЗ.НоваяКолонка(\"КодНП\", \"Число\",3,0);
ОТЗ.НоваяКолонка(\"НаселенныйПункт\", \"Строка\",150);
ОТЗ.НоваяКолонка(\"КодУлицы\", \"Число\",3,0);
ОТЗ.НоваяКолонка(\"Улица\", \"Строка\",150);
ОТЗ.НоваяКолонка(\"Дом\", \"Строка\",7);
ОТЗ.НоваяКолонка(\"Корпус\", \"Строка\",5);
ОТЗ.НоваяКолонка(\"Квартира\", \"Строка\",5);
ОТЗ.НоваяКолонка(\"СтатусЗастрахованного\", \"Число\",2,0);
ОТЗ.НоваяКолонка(\"МестоРаботы\", \"Строка\",150);
ОТЗ.НоваяКолонка(\"ДатаНачалаЛечения\", \"Дата\");
ОТЗ.НоваяКолонка(\"ДатаОкончанияЛечения\", \"Дата\");
ОТЗ.НоваяКолонка(\"ВидМедицинскойПомощи\", \"Число\",1,0);
ОТЗ.НоваяКолонка(\"КодПрофиля\", \"Число\",2,0);
ОТЗ.НоваяКолонка(\"КодСпециальности\", \"Строка\",9);
ОТЗ.НоваяКолонка(\"КодОсновногоЗаболевания\", \"Строка\",7);
ОТЗ.НоваяКолонка(\"КодСопутствующегоЗаболевания\", \"Строка\",7);
ОТЗ.НоваяКолонка(\"ИсходЗаболевания\", \"Число\",2,0);
ОТЗ.НоваяКолонка(\"ОГРНЛПУ\", \"Строка\",15);
ОТЗ.НоваяКолонка(\"СуммаКОплате\", \"Число\",11,2);
ОТЗ.НоваяКолонка(\"ПорядковыйНомер\", \"Число\",5,0);
ОТЗ.НоваяКолонка(\"КодПричины\", \"Строка\",8);
ОТЗ.НоваяКолонка(\"ПризнакОсобыйСлучай\", \"Строка\",7);


СпрОкато = СоздатьОбъект(\"Справочник.КодТерритории\"); // справочник с кодами ОКАТО
СпрОкато.ВыбратьЭлементы();
Пока СпрОкато.ПолучитьЭлемент() = 1 Цикл
ВыбранноеОкато = СпрОкато.ТекущийЭлемент();
Doc = СоздатьОбъект(\"Документ.РеестрСчетовВходящийЛПУ\");
Doc.ВыбратьДокументы(ВыбНачПериода,ВыбНачПериода);
DocTFOMS = СоздатьОбъект(\"Документ.РеестрСчетовИсходящийВТФОМС\");
Пока Doc.ПолучитьДокумент() = 1 Цикл // перебираем все документы за период
Если (Doc.ПометкаУдаления()=0) и (Doc.Проведен()=1) Тогда //просматриваем проведенные и не поченные на удаление документы
СчетчикСтрок=1;
Doc.ВыбратьСтроки();
Пока Doc.ПолучитьСтроку()=1 Цикл // перебираем все строки документа и заносим в ТЗ
ТЗ.НоваяСтрока();
ТЗ.Номер=СчетчикСтрок;
ТЗ.ОкатоСтрахования = Doc.ОкатоСтрахования;
ТЗ.Фамилия=Doc.ФамилияПациента;
ТЗ.Имя=DOC.ИмяПациента;
ТЗ.Отчество=DOC.ОтчествоПациента;
ТЗ.Пол=DOC.ПолПациента;
ТЗ.ДатаРождения=DOC.ДатаРожденияПациента;
ТЗ.КодДокумента=DOC.КодДокумента;
ТЗ.СерияДокумента=DOC.СерияДокумента;
ТЗ.НомерДокумента=DOC.НомерДокумента;
ТЗ.СерияНомерПолиса=DOC.СерияНомерПолиса;
ТЗ.ДатаВыдачиПолиса=DOC.ДатаВыдачиПолиса;
ТЗ.ДатаОкончанияПолиса=DOC.ДатаОкончанияПолиса;
ТЗ.СтатусПредставителя=DOC.СтатусПредставителя;
ТЗ.ФамилияПредставителя=DOC.ФамилияПредставителя;
ТЗ.ИмяПредставителя=DOC.ИмяПредставителя;
ТЗ.ОтчествоПредставителя=DOC.ОтчествоПредставителя;
ТЗ.ОГРНСМО=DOC.ОГРНСМО;
ТЗ.Гражданство=DOC.Гражданство;
ТЗ.НаименованиеРайона=DOC.Район;
ТЗ.КодНП=DOC.КодНП;
ТЗ.НаселенныйПункт=DOC.НаселенныйПункт;
ТЗ.КодУлицы=DOC.КодУлицы;
ТЗ.Улица=DOC.Улица;
ТЗ.Дом=DOC.Дом;
ТЗ.Корпус=DOC.Корпус;
ТЗ.Квартира=DOC.Квартира;
ТЗ.СтатусЗастрахованного=DOC.СтатусЗастрахованного;
ТЗ.МестоРаботы=DOC.МестоРаботы;
ТЗ.ДатаНачалаЛечения=DOC.ДатаНачалаЛечения;
ТЗ.ДатаОкончанияЛечения=DOC.ДатаОкончанияЛечения;
ТЗ.ВидМедицинскойПомощи=DOC.ВидМедицинскойПомощи;
ТЗ.КодПрофиля=DOC.КодПрофиля;
ТЗ.КодСпециальности=DOC.КодСпециальности;
ТЗ.КодОсновногоЗаболевания=DOC.КодОсновногоЗаболевания;
ТЗ.КодСопутствующегоЗаболевания=DOC.КодСопутствующегоЗаболевания;
ТЗ.ИсходЗаболевания=DOC.ИсходЗаболевания;
ТЗ.ОГРНЛПУ=DOC.ОГРНЛПУ;
ТЗ.СуммаКОплате=DOC.СуммаКОплате;
ТЗ.ПорядковыйНомер=DOC.ПорядковыйНомер;
ТЗ.КодПричины=DOC.КодПричины;
ТЗ.ПризнакОсобыйСлучай=DOC.ПризнакОсобыйСлучай;
СчетчикСтрок = СчетчикСтрок + 1;
КонецЦикла;
ТЗ.ВыбратьСтроки();
k = 0;
N=0;
Пока ТЗ.ПолучитьСтроку() = 1 цикл // перебираем строки ТЗ
k = k + 1;
//Если ТЗ.ОкатоСтрахования = ВыбранноеОкато Тогда // заносим пациентов с указанным Окато в ОТЗ
ОТЗ.НоваяСтрока();
N = N +1;
для m = 1 по ТЗ.КоличествоКолонок() цикл
ОТЗ.УстановитьЗначение(N,m,ТЗ.ПолучитьЗначение(k,m))
КонецЦикла;
//КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
//DocTFOMS.Новый();
ОТЗ.ВыбратьСтроки();// перебираем строки из ОТЗ (пациенты с одинаковым ОКАТО)
k=1;
Пока ОТЗ.ПолучитьСтроку() = 1 цикл
Сообщить(ОТЗ.ОкатоСтрахования);
Сообщить(ОТЗ.Фамилия);
Сообщить(ОТЗ.Имя);
Сообщить(ОТЗ.Отчество);
//DocTFOMS.НоваяСтрока();
//DocTFOMS.НомерСтроки=k;
//DocTFOMS.ОкатоСтрахования=ОТЗ.ОкатоСтрахования;
//DocTFOMS.ФамилияПациента=ОТЗ.Фамилия;
//DocTFOMS.ИмяПациента=ОТЗ.Имя;
//DocTFOMS.ОтчествоПациента=ОТЗ.Отчество;
//DocTFOMS.ПолПациента=ОТЗ.Пол;
//DocTFOMS.ДатаРожденияПациента=ОТЗ.ДатаРождения;
//DocTFOMS.КодДокумента=ОТЗ.КодДокумента;
//DocTFOMS.СерияДокумента=ОТЗ.СерияДокумента;
//DocTFOMS.НомерДокумента=ОТЗ.НомерДокумента;
//DocTFOMS.СерияНомерПолиса=ОТЗ.СерияНомерПолиса;
//DocTFOMS.ДатаВыдачиПолиса=ОТЗ.ДатаВыдачиПолиса;
//DocTFOMS.ДатаОкончанияПолиса=ОТЗ.ДатаОкончанияПолиса;
//DocTFOMS.СтатусПредставителя=ОТЗ.СтатусПредставителя;
//DocTFOMS.ФамилияПредставителя=ОТЗ.ФамилияПредставителя;
//DocTFOMS.ИмяПредставителя=ОТЗ.ИмяПредставителя;
//DocTFOMS.ОтчествоПредставителя=ОТЗ.ОтчествоПредставителя;
//DocTFOMS.ОГРНСМО=ОТЗ.ОГРНСМО;
//DocTFOMS.Гражданство=ОТЗ.Гражданство;
//DocTFOMS.НаименованиеРайона=ОТЗ.НаименованиеРайона;
//DocTFOMS.КодНП=ОТЗ.КодНП;
//DocTFOMS.НаселенныйПункт=ОТЗ.НаселенныйПункт;
//DocTFOMS.КодУлицы=ОТЗ.КодУлицы;
//DocTFOMS.Улица=ОТЗ.Улица;
//DocTFOMS.Дом=ОТЗ.Дом;
//DocTFOMS.Корпус=ОТЗ.Корпус;
//DocTFOMS.Квартира=ОТЗ.Квартира;
//DocTFOMS.СтатусЗастрахованного=ОТЗ.СтатусЗастрахованного;
//DocTFOMS.МестоРаботы=ОТЗ.МестоРаботы;
//DocTFOMS.ДатаНачалаЛечения=ОТЗ.ДатаНачалаЛечения;
//DocTFOMS.ДатаОкончанияЛечения=ОТЗ.ДатаОкончанияЛечения;
//DocTFOMS.ВидМедициснкойПомощи=ОТЗ.ВидМедициснкойПомощи;
//DocTFOMS.КодПрофиля=ОТЗ.КодПрофиля;
//DocTFOMS.КодСпециальности=ОТЗ.КодСпециальности;
//DocTFOMS.КодОсновногоЗаболевания=ОТЗ.КодОсновногоЗаболевания;
//DocTFOMS.КодСопутствующегоЗаболевания=ОТЗ.КодСопутствующегоЗаболевания;
//DocTFOMS.ИсходЗаболевания=ОТЗ.ИсходЗаболевания;
//DocTFOMS.ОГРНЛПУ=ОТЗ.ОГРНЛПУ;
//DocTFOMS.СуммаКОплате=ОТЗ.СуммаКОплате;
//DocTFOMS.ПорядковыйНомер=ОТЗ.ПорядковыйНомер;
//DocTFOMS.КодПричины=ОТЗ.КодПричины;
//DocTFOMS.ПризнакОсобыйСлучай=ОТЗ.ПризнакОсобыйСлучай;
//k=k+1;
КонецЦикла;
//DocTFOMS.Записать(); // и т.д.
//DocTFOMS.Провести();
КонецЦикла;
Сообщить(\"Конец формирования реестров счетов исходящих\");
КонецПроцедуры

[/codebox]

Для проверки вывожу данные на экран - они есть! А вот в документ не выгружаются(
 
V

vbs

ОкатоСтрахования у тебя в документе имеет тип "строка" 5 символов, а сравниваешь ты его с ЭЛЕМЕНТОМ справочника, а надо с КОДОМ


ВыбранноеОКАТО = СПРОКАТО.Код

И неплохо бы сравнивать обрезанные справа реквизиты с обрезанным справа кодом

А еще лучше - изменить тип реквизита ОкатоСтрахования на "Справочник.ОКАТО", тогда и твой код сработает
 
V

vbs

Вот тебе работающая обработка
И ряд замечаний :
1. В справочнике "Пациенты" 13 реквизитов, а ты все дублируешь в документ, причем все надо заполнять руками, зачем же тогда справочник ?
Оставь один реквизит типа "Справочник.Пациенты", остальные данные определяй из него, табличная часть резко уменьшится в ширину
2. Кнопку "Закрыть" лучше делать самой правой, а не самой левой, это общий стиль, а к твоему я в твоей базе привыкнуть так и не смог
 

Вложения

  • Reestr.rar
    3,9 КБ · Просмотры: 167
B

BBDragon

ОкатоСтрахования у тебя в документе имеет тип "строка" 5 символов, а сравниваешь ты его с ЭЛЕМЕНТОМ справочника, а надо с КОДОМ


ВыбранноеОКАТО = СПРОКАТО.Код

И неплохо бы сравнивать обрезанные справа реквизиты с обрезанным справа кодом

А еще лучше - изменить тип реквизита ОкатоСтрахования на "Справочник.ОКАТО", тогда и твой код сработает

Все верно, в запарке проглядел это)) Как раз сегодня утром вспомнил про это :)
Я немного по-другому сделал - изменил условие в цикле на:

Если ТЗ.ОкатоСтрахования = ВыбранноеОкато.ПолныйКод Тогда

Вот тебе работающая обработка
И ряд замечаний :
1. В справочнике "Пациенты" 13 реквизитов, а ты все дублируешь в документ, причем все надо заполнять руками, зачем же тогда справочник ?
Оставь один реквизит типа "Справочник.Пациенты", остальные данные определяй из него, табличная часть резко уменьшится в ширину
2. Кнопку "Закрыть" лучше делать самой правой, а не самой левой, это общий стиль, а к твоему я в твоей базе привыкнуть так и не смог

Обработка, к сожалению, работает некорректно - документы пустые. Таким простым образом данные не выгружаются - приходится все делать построчно, иначе никак.. :maybe:
1. Данные приходится копировать все, ибо форма реестра именно такая, нужно заполнять все 40 с лишним полей.
2. Программу писал не я, мне просто поручили в срочном порядке переделать ее под требования нового приказа.

Как показывает моя практика, лучше сразу, чем потом) Потом думается, "работает и лучше не трогать..."))

Все верно, просто хотелось сначала решить главную проблему - формирование документов. Теперь вот думаю над решением этой проблемы.


[codebox]
Процедура Сформировать()
Перем ТЗ, ОТЗ;

ТЗ = СоздатьОбъект("ТаблицаЗначений");// Таблица значений для данных 1 документа
ОТЗ = СоздатьОбъект("ТаблицаЗначений"); // Общая таблица значений с данными всех пациентов отдельного региона

// создаем набор колонок для ТЗ
ТЗ.НоваяКолонка("Номер", "Число",4,0);
ТЗ.НоваяКолонка("ОкатоСтрахования", "Строка",5);
ТЗ.НоваяКолонка("Фамилия", "Строка",40);
ТЗ.НоваяКолонка("Имя", "Строка",40);
ТЗ.НоваяКолонка("Отчество", "Строка",40);
ТЗ.НоваяКолонка("Пол", "Строка",1);
ТЗ.НоваяКолонка("ДатаРождения", "Дата");
ТЗ.НоваяКолонка("КодДокумента", "Число",2,0);
ТЗ.НоваяКолонка("СерияДокумента", "Строка",9);
ТЗ.НоваяКолонка("НомерДокумента", "Строка",8);
ТЗ.НоваяКолонка("СерияНомерПолиса", "Строка",25);
ТЗ.НоваяКолонка("ДатаВыдачиПолиса", "Дата");
ТЗ.НоваяКолонка("ДатаОкончанияПолиса", "Дата");
ТЗ.НоваяКолонка("СтатусПредставителя", "Число",1,0);
ТЗ.НоваяКолонка("ФамилияПредставителя", "Строка",40);
ТЗ.НоваяКолонка("ИмяПредставителя", "Строка",40);
ТЗ.НоваяКолонка("ОтчествоПредставителя", "Строка",40);
ТЗ.НоваяКолонка("ОГРНСМО", "Строка",15);
ТЗ.НоваяКолонка("Гражданство", "Строка",3);
ТЗ.НоваяКолонка("НаименованиеРайона", "Строка",150);
ТЗ.НоваяКолонка("КодНП", "Число",3,0);
ТЗ.НоваяКолонка("НаселенныйПункт", "Строка",150);
ТЗ.НоваяКолонка("КодУлицы", "Число",3,0);
ТЗ.НоваяКолонка("Улица", "Строка",150);
ТЗ.НоваяКолонка("Дом", "Строка",7);
ТЗ.НоваяКолонка("Корпус", "Строка",5);
ТЗ.НоваяКолонка("Квартира", "Строка",5);
ТЗ.НоваяКолонка("СтатусЗастрахованного", "Число",2,0);
ТЗ.НоваяКолонка("МестоРаботы", "Строка",150);
ТЗ.НоваяКолонка("ДатаНачалаЛечения", "Дата");
ТЗ.НоваяКолонка("ДатаОкончанияЛечения", "Дата");
ТЗ.НоваяКолонка("ВидМедицинскойПомощи", "Число",1,0);
ТЗ.НоваяКолонка("КодПрофиля", "Число",2,0);
ТЗ.НоваяКолонка("КодСпециальности", "Строка",9);
ТЗ.НоваяКолонка("КодОсновногоЗаболевания", "Строка",7);
ТЗ.НоваяКолонка("КодСопутствующегоЗаболевания", "Строка",7);
ТЗ.НоваяКолонка("ИсходЗаболевания", "Число",2,0);
ТЗ.НоваяКолонка("ОГРНЛПУ", "Строка",15);
ТЗ.НоваяКолонка("СуммаКОплате", "Число",11,2);
ТЗ.НоваяКолонка("ПорядковыйНомер", "Число",5,0);
ТЗ.НоваяКолонка("КодПричины", "Строка",8);
ТЗ.НоваяКолонка("ПризнакОсобыйСлучай", "Строка",7);
ТЗ.НоваяКолонка("КодТерритории", "Справочник.КодТерритории");


// аналогичный набор колонок создаем и для ОТЗ
ОТЗ.НоваяКолонка("Номер", "Число",4,0);
ОТЗ.НоваяКолонка("ОкатоСтрахования", "Строка",5);
ОТЗ.НоваяКолонка("Фамилия", "Строка",40);
ОТЗ.НоваяКолонка("Имя", "Строка",40);
ОТЗ.НоваяКолонка("Отчество", "Строка",40);
ОТЗ.НоваяКолонка("Пол", "Строка",1);
ОТЗ.НоваяКолонка("ДатаРождения", "Дата");
ОТЗ.НоваяКолонка("КодДокумента", "Число",2,0);
ОТЗ.НоваяКолонка("СерияДокумента", "Строка",9);
ОТЗ.НоваяКолонка("НомерДокумента", "Строка",8);
ОТЗ.НоваяКолонка("СерияНомерПолиса", "Строка",25);
ОТЗ.НоваяКолонка("ДатаВыдачиПолиса", "Дата");
ОТЗ.НоваяКолонка("ДатаОкончанияПолиса", "Дата");
ОТЗ.НоваяКолонка("СтатусПредставителя", "Число",1,0);
ОТЗ.НоваяКолонка("ФамилияПредставителя", "Строка",40);
ОТЗ.НоваяКолонка("ИмяПредставителя", "Строка",40);
ОТЗ.НоваяКолонка("ОтчествоПредставителя", "Строка",40);
ОТЗ.НоваяКолонка("ОГРНСМО", "Строка",15);
ОТЗ.НоваяКолонка("Гражданство", "Строка",3);
ОТЗ.НоваяКолонка("НаименованиеРайона", "Строка",150);
ОТЗ.НоваяКолонка("КодНП", "Число",3,0);
ОТЗ.НоваяКолонка("НаселенныйПункт", "Строка",150);
ОТЗ.НоваяКолонка("КодУлицы", "Число",3,0);
ОТЗ.НоваяКолонка("Улица", "Строка",150);
ОТЗ.НоваяКолонка("Дом", "Строка",7);
ОТЗ.НоваяКолонка("Корпус", "Строка",5);
ОТЗ.НоваяКолонка("Квартира", "Строка",5);
ОТЗ.НоваяКолонка("СтатусЗастрахованного", "Число",2,0);
ОТЗ.НоваяКолонка("МестоРаботы", "Строка",150);
ОТЗ.НоваяКолонка("ДатаНачалаЛечения", "Дата");
ОТЗ.НоваяКолонка("ДатаОкончанияЛечения", "Дата");
ОТЗ.НоваяКолонка("ВидМедицинскойПомощи", "Число",1,0);
ОТЗ.НоваяКолонка("КодПрофиля", "Число",2,0);
ОТЗ.НоваяКолонка("КодСпециальности", "Строка",9);
ОТЗ.НоваяКолонка("КодОсновногоЗаболевания", "Строка",7);
ОТЗ.НоваяКолонка("КодСопутствующегоЗаболевания", "Строка",7);
ОТЗ.НоваяКолонка("ИсходЗаболевания", "Число",2,0);
ОТЗ.НоваяКолонка("ОГРНЛПУ", "Строка",15);
ОТЗ.НоваяКолонка("СуммаКОплате", "Число",11,2);
ОТЗ.НоваяКолонка("ПорядковыйНомер", "Число",5,0);
ОТЗ.НоваяКолонка("КодПричины", "Строка",8);
ОТЗ.НоваяКолонка("ПризнакОсобыйСлучай", "Строка",7);
ОТЗ.НоваяКолонка("КодТерритории", "Справочник.КодТерритории");


СпрОкато = СоздатьОбъект("Справочник.КодТерритории"); // справочник с кодами ОКАТО
СпрОкато.ВыбратьЭлементы();
Пока СпрОкато.ПолучитьЭлемент() = 1 Цикл
ВыбранноеОкато = СпрОкато.ТекущийЭлемент();
Doc = СоздатьОбъект("Документ.РеестрСчетовВходящийЛПУ");
Doc.ВыбратьДокументы(ВыбНачПериода,ВыбНачПериода);
DocTFOMS = СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
Пока Doc.ПолучитьДокумент() = 1 Цикл // перебираем все документы за период
Если (Doc.ПометкаУдаления()=0) и (Doc.Проведен()=1) Тогда //просматриваем проведенные и не поченные на удаление документы
СчетчикСтрок=1;
Doc.ВыбратьСтроки();
Пока Doc.ПолучитьСтроку()=1 Цикл // перебираем все строки документа и заносим в ТЗ
ТЗ.НоваяСтрока();
ТЗ.Номер=СчетчикСтрок;
ТЗ.ОкатоСтрахования = Doc.ОкатоСтрахования;
ТЗ.Фамилия=Doc.ФамилияПациента;
ТЗ.Имя=DOC.ИмяПациента;
ТЗ.Отчество=DOC.ОтчествоПациента;
ТЗ.Пол=DOC.ПолПациента;
ТЗ.ДатаРождения=DOC.ДатаРожденияПациента;
ТЗ.КодДокумента=DOC.КодДокумента;
ТЗ.СерияДокумента=DOC.СерияДокумента;
ТЗ.НомерДокумента=DOC.НомерДокумента;
ТЗ.СерияНомерПолиса=DOC.СерияНомерПолиса;
ТЗ.ДатаВыдачиПолиса=DOC.ДатаВыдачиПолиса;
ТЗ.ДатаОкончанияПолиса=DOC.ДатаОкончанияПолиса;
ТЗ.СтатусПредставителя=DOC.СтатусПредставителя;
ТЗ.ФамилияПредставителя=DOC.ФамилияПредставителя;
ТЗ.ИмяПредставителя=DOC.ИмяПредставителя;
ТЗ.ОтчествоПредставителя=DOC.ОтчествоПредставителя;
ТЗ.ОГРНСМО=DOC.ОГРНСМО;
ТЗ.Гражданство=DOC.Гражданство;
ТЗ.НаименованиеРайона=DOC.Район;
ТЗ.КодНП=DOC.КодНП;
ТЗ.НаселенныйПункт=DOC.НаселенныйПункт;
ТЗ.КодУлицы=DOC.КодУлицы;
ТЗ.Улица=DOC.Улица;
ТЗ.Дом=DOC.Дом;
ТЗ.Корпус=DOC.Корпус;
ТЗ.Квартира=DOC.Квартира;
ТЗ.СтатусЗастрахованного=DOC.СтатусЗастрахованного;
ТЗ.МестоРаботы=DOC.МестоРаботы;
ТЗ.ДатаНачалаЛечения=DOC.ДатаНачалаЛечения;
ТЗ.ДатаОкончанияЛечения=DOC.ДатаОкончанияЛечения;
ТЗ.ВидМедицинскойПомощи=DOC.ВидМедицинскойПомощи;
ТЗ.КодПрофиля=DOC.КодПрофиля;
ТЗ.КодСпециальности=DOC.КодСпециальности;
ТЗ.КодОсновногоЗаболевания=DOC.КодОсновногоЗаболевания;
ТЗ.КодСопутствующегоЗаболевания=DOC.КодСопутствующегоЗаболевания;
ТЗ.ИсходЗаболевания=DOC.ИсходЗаболевания;
ТЗ.ОГРНЛПУ=DOC.ОГРНЛПУ;
ТЗ.СуммаКОплате=DOC.СуммаКОплате;
ТЗ.ПорядковыйНомер=DOC.ПорядковыйНомер;
ТЗ.КодПричины=DOC.КодПричины;
ТЗ.ПризнакОсобыйСлучай=DOC.ПризнакОсобыйСлучай;
ТЗ.КодТерритории=Doc.КодТерритории;
СчетчикСтрок = СчетчикСтрок + 1;
КонецЦикла;
ТЗ.ВыбратьСтроки();
k = 0;
N=0;
Пока ТЗ.ПолучитьСтроку() = 1 цикл // перебираем строки ТЗ
k = k + 1;
Если ТЗ.ОкатоСтрахования = ВыбранноеОкато.ПолныйКод Тогда
ОТЗ.НоваяСтрока();
N = N +1;
для m = 1 по ТЗ.КоличествоКолонок() цикл
ОТЗ.УстановитьЗначение(N,m,ТЗ.ПолучитьЗначение(k,m))
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
DocTFOMS.Новый();
ОТЗ.ВыбратьСтроки();// перебираем строки из ОТЗ (пациенты с одинаковым ОКАТО)
k=1;
Пока ОТЗ.ПолучитьСтроку() = 1 цикл
//Сообщить(ОТЗ.ОкатоСтрахования);
//Сообщить(ОТЗ.Фамилия);
//Сообщить(ОТЗ.Имя);
//Сообщить(ОТЗ.Отчество);
DocTFOMS.НоваяСтрока();
DocTFOMS.НомерСтроки=k;
DocTFOMS.ОкатоСтрахования=ОТЗ.ОкатоСтрахования;
DocTFOMS.ФамилияПациента=ОТЗ.Фамилия;
DocTFOMS.ИмяПациента=ОТЗ.Имя;
DocTFOMS.ОтчествоПациента=ОТЗ.Отчество;
DocTFOMS.ПолПациента=ОТЗ.Пол;
DocTFOMS.ДатаРожденияПациента=ОТЗ.ДатаРождения;
DocTFOMS.КодДокумента=ОТЗ.КодДокумента;
DocTFOMS.СерияДокумента=ОТЗ.СерияДокумента;
DocTFOMS.НомерДокумента=ОТЗ.НомерДокумента;
DocTFOMS.СерияНомерПолиса=ОТЗ.СерияНомерПолиса;
DocTFOMS.ДатаВыдачиПолиса=ОТЗ.ДатаВыдачиПолиса;
DocTFOMS.ДатаОкончанияПолиса=ОТЗ.ДатаОкончанияПолиса;
DocTFOMS.СтатусПредставителя=ОТЗ.СтатусПредставителя;
DocTFOMS.ФамилияПредставителя=ОТЗ.ФамилияПредставителя;
DocTFOMS.ИмяПредставителя=ОТЗ.ИмяПредставителя;
DocTFOMS.ОтчествоПредставителя=ОТЗ.ОтчествоПредставителя;
DocTFOMS.ОГРНСМО=ОТЗ.ОГРНСМО;
DocTFOMS.Гражданство=ОТЗ.Гражданство;
DocTFOMS.Район=ОТЗ.НаименованиеРайона;
DocTFOMS.КодНП=ОТЗ.КодНП;
DocTFOMS.НаселенныйПункт=ОТЗ.НаселенныйПункт;
DocTFOMS.КодУлицы=ОТЗ.КодУлицы;
DocTFOMS.Улица=ОТЗ.Улица;
DocTFOMS.Дом=ОТЗ.Дом;
DocTFOMS.Корпус=ОТЗ.Корпус;
DocTFOMS.Квартира=ОТЗ.Квартира;
DocTFOMS.СтатусЗастрахованного=ОТЗ.СтатусЗастрахованного;
DocTFOMS.МестоРаботы=ОТЗ.МестоРаботы;
DocTFOMS.ДатаНачалаЛечения=ОТЗ.ДатаНачалаЛечения;
DocTFOMS.ДатаОкончанияЛечения=ОТЗ.ДатаОкончанияЛечения;
DocTFOMS.ВидМедицинскойПомощи=ОТЗ.ВидМедицинскойПомощи;
DocTFOMS.КодПрофиля=ОТЗ.КодПрофиля;
DocTFOMS.КодСпециальности=ОТЗ.КодСпециальности;
DocTFOMS.КодОсновногоЗаболевания=ОТЗ.КодОсновногоЗаболевания;
DocTFOMS.КодСопутствующегоЗаболевания=ОТЗ.КодСопутствующегоЗаболевания;
DocTFOMS.ИсходЗаболевания=ОТЗ.ИсходЗаболевания;
DocTFOMS.ОГРНЛПУ=ОТЗ.ОГРНЛПУ;
DocTFOMS.СуммаКОплате=ОТЗ.СуммаКОплате;
DocTFOMS.ПорядковыйНомер=ОТЗ.ПорядковыйНомер;
DocTFOMS.КодПричины=ОТЗ.КодПричины;
DocTFOMS.ПризнакОсобыйСлучай=ОТЗ.ПризнакОсобыйСлучай;
DocTFOMS.КодТерритории = ОТЗ.КодТерритории;
k=k+1;
КонецЦикла;
DocTFOMS.Записать(); // и т.д.
DocTFOMS.Провести();
КонецЦикла;
Сообщить("Конец формирования реестров счетов исходящих");
КонецПроцедуры

[/codebox]

На данный момент 3 проблемы: не выгружаются фамилии, пациенты задваиваются, не указывается код территории. В остальном все уже нормально :)
 
V

vbs

1. Данные приходится копировать все, ибо форма реестра именно такая, нужно заполнять все 40 с лишним полей.
Тогда проще переделать ТЧ обоих документов - вместо 40 полей останутся 5-6 ссылок
Программу писал не я,
Беда, коль сапоги начнет тачать пирожник (с)
Без боли смотреть на это просто невозможно

PS. Все же никак не могу понять, зачем 2 раза по 40 раз добавлять колонки в ТЗ, если метод "ВыгрузитьТабличнуюЧасть()"
автоматически создаст ТЗ нужной структуры :maybe:

Так что, пошел умывать руки :)
 
B

BBDragon

Уважаемый vbs, не обессудьте, пожалуйста :maybe:
Я понимаю, что мой уровень сильно хромает, ну что ж делать, я только учусь..
Метод "ВыгрузитьТабличнуюЧасть" я пробовал, но не работает, к сожалению. 1С вылетает с ошибками, пришлось вручную создать все 40 колонок.
Табличную часть документов переделывать не стал, мне проще все-таки так оставить, да и проверять так проще.
 
V

vbs

Метод "ВыгрузитьТабличнуюЧасть" я пробовал, но не работает, к сожалению. 1С вылетает с ошибками, пришлось вручную создать все 40 колонок.
А в той обработке, которую я прислал, все ведь работало :maybe:
 
B

BBDragon

А в той обработке, которую я прислал, все ведь работало ;)
Верно, если ты про первую :)
Да, там хорошая обработка, надо будет на выходных ее посмотреть как следует, авось смогу разобраться. Жаль, что код не на русском, было бы проще разобраться :)
 
V

vbs

Верно, если ты про первую
Да нет, я про ту, которую позавчера послал
Но уж если не веришь в метод "ВыгрузитьТабличнуюЧасть" (хотя, почему ? Если у меня все прекрасно отрабатывает на твоей базе :) ),
делай через Метаданные
Для ы = 1 по Метаданные.Документ("имяДок").РеквизитТабличнойЧасти() цикл //ИмяДок - название его в конфигурации
ТЗ.НоваяКолонка(Метаданные.Документ("имяДок").РеквизитТабличнойЧасти(ы).Идентификатор)
КонецЦикла


Синтаксис уточни, по памяти пишу

1. При этом не будет ошибок в названиях реквизитов
2. код будет в 13.333 раза короче
 
B

BBDragon

Несколько дней занимался другими вопросами, потом вернулся к обработке и в итоге у меня получилось! Всем спасибо огромное за помощь и долготерпение, особенно уважаемому vbs :rolleyes:
Итоговый вариант обработки:

[codebox]
Процедура Сформировать()
Перем ТЗ;

ТЗ = СоздатьОбъект("ТаблицаЗначений");// Таблица значений для данных всех документов

// создаем набор колонок для ТЗ
ТЗ.НоваяКолонка("Номер", "Число",4,0);
ТЗ.НоваяКолонка("ОкатоСтрахования", "Строка",5);
ТЗ.НоваяКолонка("Фамилия", "Строка",40);
ТЗ.НоваяКолонка("Имя", "Строка",40);
ТЗ.НоваяКолонка("Отчество", "Строка",40);
ТЗ.НоваяКолонка("Пол", "Строка",1);
ТЗ.НоваяКолонка("ДатаРождения", "Дата");
ТЗ.НоваяКолонка("КодДокумента", "Число",2,0);
ТЗ.НоваяКолонка("СерияДокумента", "Строка",9);
ТЗ.НоваяКолонка("НомерДокумента", "Строка",8);
ТЗ.НоваяКолонка("СерияНомерПолиса", "Строка",25);
ТЗ.НоваяКолонка("ДатаВыдачиПолиса", "Дата");
ТЗ.НоваяКолонка("ДатаОкончанияПолиса", "Дата");
ТЗ.НоваяКолонка("СтатусПредставителя", "Число",1,0);
ТЗ.НоваяКолонка("ФамилияПредставителя", "Строка",40);
ТЗ.НоваяКолонка("ИмяПредставителя", "Строка",40);
ТЗ.НоваяКолонка("ОтчествоПредставителя", "Строка",40);
ТЗ.НоваяКолонка("ОГРНСМО", "Строка",15);
ТЗ.НоваяКолонка("Гражданство", "Строка",3);
ТЗ.НоваяКолонка("НаименованиеРайона", "Строка",150);
ТЗ.НоваяКолонка("КодНП", "Число",3,0);
ТЗ.НоваяКолонка("НаселенныйПункт", "Строка",150);
ТЗ.НоваяКолонка("КодУлицы", "Число",3,0);
ТЗ.НоваяКолонка("Улица", "Строка",150);
ТЗ.НоваяКолонка("Дом", "Строка",7);
ТЗ.НоваяКолонка("Корпус", "Строка",5);
ТЗ.НоваяКолонка("Квартира", "Строка",5);
ТЗ.НоваяКолонка("СтатусЗастрахованного", "Число",2,0);
ТЗ.НоваяКолонка("МестоРаботы", "Строка",150);
ТЗ.НоваяКолонка("ДатаНачалаЛечения", "Дата");
ТЗ.НоваяКолонка("ДатаОкончанияЛечения", "Дата");
ТЗ.НоваяКолонка("ВидМедицинскойПомощи", "Число",1,0);
ТЗ.НоваяКолонка("КодПрофиля", "Число",2,0);
ТЗ.НоваяКолонка("КодСпециальности", "Строка",9);
ТЗ.НоваяКолонка("КодОсновногоЗаболевания", "Строка",7);
ТЗ.НоваяКолонка("КодСопутствующегоЗаболевания", "Строка",7);
ТЗ.НоваяКолонка("ИсходЗаболевания", "Число",2,0);
ТЗ.НоваяКолонка("ОГРНЛПУ", "Строка",15);
ТЗ.НоваяКолонка("СуммаКОплате", "Число",11,2);
ТЗ.НоваяКолонка("ПорядковыйНомер", "Число",5,0);
ТЗ.НоваяКолонка("КодПричины", "Строка",8);
ТЗ.НоваяКолонка("ПризнакОсобыйСлучай", "Строка",7);
ТЗ.НоваяКолонка("КодТерритории", "Строка", 2);
ТЗ.НоваяКолонка("Регион", "Строка", 2);

Doc = СоздатьОбъект("Документ.РеестрСчетовВходящийЛПУ");
Doc.ВыбратьДокументы(ВыбНачПериода,ВыбНачПериода);
DocTFOMS = СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
Пока Doc.ПолучитьДокумент() = 1 Цикл // перебираем все документы за период
Если (Doc.ПометкаУдаления()=0) и (Doc.Проведен()=1) Тогда //просматриваем проведенные и не помеченные на удаление документы
СчетчикСтрок=1;
Doc.ВыбратьСтроки();
Пока Doc.ПолучитьСтроку()=1 Цикл // перебираем все строки документа и заносим в ТЗ
ТЗ.НоваяСтрока();
ТЗ.Номер=СчетчикСтрок;
ТЗ.ОкатоСтрахования = Doc.ОкатоСтрахования;
СпрФам = СоздатьОбъект("Справочник.ПациентыЛПУ");
СпрФам.НайтиЭлемент(Doc.ФамилияПациента);
ТЗ.Фамилия=СпрФам.Наименование;
ТЗ.Имя=DOC.ИмяПациента;
ТЗ.Отчество=DOC.ОтчествоПациента;
ТЗ.Пол=DOC.ПолПациента;
ТЗ.ДатаРождения=DOC.ДатаРожденияПациента;
ТЗ.КодДокумента=DOC.КодДокумента;
ТЗ.СерияДокумента=DOC.СерияДокумента;
ТЗ.НомерДокумента=DOC.НомерДокумента;
ТЗ.СерияНомерПолиса=DOC.СерияНомерПолиса;
ТЗ.ДатаВыдачиПолиса=DOC.ДатаВыдачиПолиса;
ТЗ.ДатаОкончанияПолиса=DOC.ДатаОкончанияПолиса;
ТЗ.СтатусПредставителя=DOC.СтатусПредставителя;
ТЗ.ФамилияПредставителя=DOC.ФамилияПредставителя;
ТЗ.ИмяПредставителя=DOC.ИмяПредставителя;
ТЗ.ОтчествоПредставителя=DOC.ОтчествоПредставителя;
ТЗ.ОГРНСМО=DOC.ОГРНСМО;
ТЗ.Гражданство=DOC.Гражданство;
ТЗ.НаименованиеРайона=DOC.Район;
ТЗ.КодНП=DOC.КодНП;
ТЗ.НаселенныйПункт=DOC.НаселенныйПункт;
ТЗ.КодУлицы=DOC.КодУлицы;
ТЗ.Улица=DOC.Улица;
ТЗ.Дом=DOC.Дом;
ТЗ.Корпус=DOC.Корпус;
ТЗ.Квартира=DOC.Квартира;
ТЗ.СтатусЗастрахованного=DOC.СтатусЗастрахованного;
ТЗ.МестоРаботы=DOC.МестоРаботы;
ТЗ.ДатаНачалаЛечения=DOC.ДатаНачалаЛечения;
ТЗ.ДатаОкончанияЛечения=DOC.ДатаОкончанияЛечения;
ТЗ.ВидМедицинскойПомощи=DOC.ВидМедицинскойПомощи;
ТЗ.КодПрофиля=DOC.КодПрофиля;
ТЗ.КодСпециальности=DOC.КодСпециальности;
ТЗ.КодОсновногоЗаболевания=DOC.КодОсновногоЗаболевания;
ТЗ.КодСопутствующегоЗаболевания=DOC.КодСопутствующегоЗаболевания;
ТЗ.ИсходЗаболевания=DOC.ИсходЗаболевания;
ТЗ.ОГРНЛПУ=DOC.ОГРНЛПУ;
ТЗ.СуммаКОплате=DOC.СуммаКОплате;
ТЗ.ПорядковыйНомер=DOC.ПорядковыйНомер;
ТЗ.КодПричины=DOC.КодПричины;
ТЗ.ПризнакОсобыйСлучай=DOC.ПризнакОсобыйСлучай;
ТЗ.КодТерритории=Doc.КодТерритории;
ТЗ.Регион = Doc.Регион;
СчетчикСтрок = СчетчикСтрок + 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТЗ.Сортировать("ОкатоСтрахования");
ОкатоСтрахования = "";
k=1;

ТЗ.ВыбратьСтроки();// перебираем строки из ОТЗ (пациенты с одинаковым ОКАТО)
Пока ТЗ.ПолучитьСтроку() = 1 цикл
Если ОкатоСтрахования <> ТЗ.ОкатоСтрахования Тогда
Если ОкатоСтрахования<>"" Тогда
DocTFOMS.Записать();
DocTFOMS.Провести();
КонецЕсли;
DocTFOMS.Новый();
ОкатоСтрахования = ТЗ.ОкатоСтрахования;
КонецЕсли;
DocTFOMS.НоваяСтрока();
DocTFOMS.НомерСтроки=k;
DocTFOMS.ОкатоСтрахования=ТЗ.ОкатоСтрахования;
DocTFOMS.ФамилияПациента=ТЗ.Фамилия;
DocTFOMS.ИмяПациента=ТЗ.Имя;
DocTFOMS.ОтчествоПациента=ТЗ.Отчество;
DocTFOMS.ПолПациента=ТЗ.Пол;
DocTFOMS.ДатаРожденияПациента=ТЗ.ДатаРождения;
DocTFOMS.КодДокумента=ТЗ.КодДокумента;
DocTFOMS.СерияДокумента=ТЗ.СерияДокумента;
DocTFOMS.НомерДокумента=ТЗ.НомерДокумента;
DocTFOMS.СерияНомерПолиса=ТЗ.СерияНомерПолиса;
DocTFOMS.ДатаВыдачиПолиса=ТЗ.ДатаВыдачиПолиса;
DocTFOMS.ДатаОкончанияПолиса=ТЗ.ДатаОкончанияПолиса;
DocTFOMS.СтатусПредставителя=ТЗ.СтатусПредставителя;
DocTFOMS.ФамилияПредставителя=ТЗ.ФамилияПредставителя;
DocTFOMS.ИмяПредставителя=ТЗ.ИмяПредставителя;
DocTFOMS.ОтчествоПредставителя=ТЗ.ОтчествоПредставителя;
DocTFOMS.ОГРНСМО=ТЗ.ОГРНСМО;
DocTFOMS.Гражданство=ТЗ.Гражданство;
DocTFOMS.Район=ТЗ.НаименованиеРайона;
DocTFOMS.КодНП=ТЗ.КодНП;
DocTFOMS.НаселенныйПункт=ТЗ.НаселенныйПункт;
DocTFOMS.КодУлицы=ТЗ.КодУлицы;
DocTFOMS.Улица=ТЗ.Улица;
DocTFOMS.Дом=ТЗ.Дом;
DocTFOMS.Корпус=ТЗ.Корпус;
DocTFOMS.Квартира=ТЗ.Квартира;
DocTFOMS.СтатусЗастрахованного=ТЗ.СтатусЗастрахованного;
DocTFOMS.МестоРаботы=ТЗ.МестоРаботы;
DocTFOMS.ДатаНачалаЛечения=ТЗ.ДатаНачалаЛечения;
DocTFOMS.ДатаОкончанияЛечения=ТЗ.ДатаОкончанияЛечения;
DocTFOMS.ВидМедицинскойПомощи=ТЗ.ВидМедицинскойПомощи;
DocTFOMS.КодПрофиля=ТЗ.КодПрофиля;
DocTFOMS.КодСпециальности=ТЗ.КодСпециальности;
DocTFOMS.КодОсновногоЗаболевания=ТЗ.КодОсновногоЗаболевания;
DocTFOMS.КодСопутствующегоЗаболевания=ТЗ.КодСопутствующегоЗаболевания;
DocTFOMS.ИсходЗаболевания=ТЗ.ИсходЗаболевания;
DocTFOMS.ОГРНЛПУ=ТЗ.ОГРНЛПУ;
DocTFOMS.СуммаКОплате=ТЗ.СуммаКОплате;
DocTFOMS.ПорядковыйНомер=k;
DocTFOMS.КодПричины=ТЗ.КодПричины;
DocTFOMS.ПризнакОсобыйСлучай=ТЗ.ПризнакОсобыйСлучай;
DocTFOMS.КодТерритории = ТЗ.КодТерритории;
DocTFOMS.Регион = ТЗ.Регион;
k=k+1;
КонецЦикла;
Сообщить("Конец формирования реестров счетов исходящих");
КонецПроцедуры
[/codebox]

Таким образом тему можно закрывать :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!