Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: 1C 8.2 Печать нескольких табличных документов на одном листе

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

Есть документ "Развозка", который имеет реквизиты:
Номер
Дата
Документ/Документы.РеализацияТоваровУслуг
Контрагент/Справочники.Контрагенты
Адрес/строка/50
АдресВручную/Булево
Автомобиль/Справочники.Автомобили
Водитель/Справочники/ФизическиеЛица
Примечание/строка/100

На форме документа поле Контрагент должно быть недоступным, так как данные в этом поле заполняются на основании данных из поля Документ.
Форма обычная.

1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура ДокументПриИзменении(Элемент)
    Элементы.Контрагент.ТекстРедактирования = Документ.Контрагент.Ссылка;
    Если Элементы.АдресВручную.Значение = Ложь Тогда
        ФАдрес = ПолучитьАдресКонтрагента(Элементы.Контрагент.ТекстРедактирования);
        Элементы.Адрес.ТекстРедактирования = ФАдрес;
    КонецЕсли;
КонецПроцедуры
Не работает строка Документ.Контрагент.Ссылка
То есть мы заполняем поле Контрагент на форме, "вытягивая" его из реквизита Контрагент, выбранного документа.

Не работает строка (Элементы.АдресВручную.Значение = Ложь) эту строку я исправила с помощью Объект.АдресВручную
Ответ:
Сообщение от Anastasia_Sokel
(Элементы.Документ
1C
1
Объект.Документ
Добавлено через 36 секунд
Anastasia_Sokel, Забудьте про слово ЭЛЕМЕНТЫ
Вопрос: Количество строк табличного документа

Помогите пожалуйста подсчитать кол-во строк табличного документа!!!
Получаю с формы с поля ввода текст, вывожу его на печать. Если текст не помещается на 1 страницу, получается не очень хорошо. хотел бы подсчитать количество строк, чтобы сделать фиксированный вывод строк на одну страницу.
Процедура Печать(Элемент)
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.СлужебнаяЗаписка.ПолучитьМакет("Печать");
Шапка=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(Шапка);
ТекстСЗ=Макет.ПолучитьОбласть("ТекстСЗ");
//параметр, в который подставляется значение поля ввода.
ТекстСЗ.Параметры.Заполнить(ЭтотОбъект);
//необходимо подсчитать количество строк перед выводом,
ТабДок.Вывести(ТекстСЗ);
Подвал=Макет.ПолучитьОбласть("Подвал");
ТабДок.Вывести(Подвал);
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.ПовторятьПриПечатиСтроки=(ТабДок.Области.Шапка);
ТабДок.Показать();
КонецПроцедуры
Ответ:
Интересует как можно влиять на количество печатаемых на листе строк. К примеру есть указать в ручную количество строк меньшее чем есть в табличном документе <code>(ТабДок.ВысотаТаблицы=7</code> получим сообщение об ошибке «Поле объекта недоступно для записи (ВысотаТаблицы) ТабДок.ВысотаТаблицы=7;». В моем пробном примере в ВысотаТаблицы было 8. В типовых конфигурациях можно встретить такое
Выводится макет с табличной частью на четыре листа при этом табличная часть не заполняет всю таблицу
Вопрос: Обращение к табличной части документа ОперацияБух

Делаю внешнюю печатную форму на основе макета Накладная0315007 для документа Операция (бухгалтерская) ручная.

Как в запросе вытащить значения полей "табличной части" формы документа.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Функция Печать() Экспорт
    Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ОперацияБух") Тогда
        ТабДокумент = Печать0315007();
    КонецЕсли;
    
    Возврат ТабДокумент;
КонецФункции
 
Функция Печать0315007()
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    Запрос = Новый Запрос;
 
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.Ссылка);
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    ОперацияБух.Номер КАК пНомер,
                   |    ОперацияБух.Дата КАК пДата,
                   |    ОперацияБух.Учреждение.НаименованиеПолное КАК пНаименованиеОрганизации,
                   |    ОперацияБух.Учреждение.КодОКПО КАК пКодОКПО,
                   //|  ОперацияБух.ЦМООтправитель.Подразделение.Представление КАК пПодразделениеОтправитель,
                   //|  ВЫБОР
                   //|      КОГДА ОперацияБух.Контрагент.НаименованиеПолное = """"
                   //|          ТОГДА ОперацияБух.Контрагент.Представление
                   //|      ИНАЧЕ ОперацияБух.Контрагент.НаименованиеПолное
                   //|  КОНЕЦ КАК пКонтрагент,
                   //|  ОперацияБух.Руководитель КАК Руководитель,
                   //|  ОперацияБух.Руководитель.Контрагент.Фамилия КАК РуководительФамилия,
                   //|  ОперацияБух.Руководитель.Контрагент.Имя КАК РуководительИмя,
                   //|  ОперацияБух.Руководитель.Контрагент.Отчество КАК РуководительОтчество,
                   //|  ОперацияБух.ГлавныйБухгалтер.Контрагент.Фамилия КАК ГлавныйБухгалтерФамилия,
                   //|  ОперацияБух.ГлавныйБухгалтер.Контрагент.Имя КАК ГлавныйБухгалтерИмя,
                   //|  ОперацияБух.ГлавныйБухгалтер.Контрагент.Отчество КАК ГлавныйБухгалтерОтчество,
                   //|  ОперацияБух.Материалы.(
                   //|      НомерСтроки,
                   //|      ВЫБОР
                   //|          КОГДА ОперацияБух.Материалы.Номенклатура.НаименованиеПолное = """"
                   //|              ТОГДА ОперацияБух.Материалы.Номенклатура.Представление
                   //|          ИНАЧЕ ОперацияБух.Материалы.Номенклатура.НаименованиеПолное
                   //|      КОНЕЦ КАК пНоменклатура,
                   //|      Номенклатура.НоменклатурныйНомер КАК пНоменклатурныйНомер,
                   //|      Номенклатура.Код КАК пКодАналитики,
                   //|      ЕдиницаИзмерения.Представление КАК пЕдиница,
                   //|      ЕдиницаИзмерения.Код КАК пКодЕдиницы,
                   //|      Количество КАК пКоличество,
                   //|      Сумма КАК пСуммаБезНДС,
                   //|      0 КАК пСуммаНДС,
                   //|      Сумма КАК пВсего,
                   //|      ВЫБОР
                   //|          КОГДА ОперацияБух.Материалы.Количество = 0
                   //|              ТОГДА 0
                   //|          ИНАЧЕ ОперацияБух.Материалы.Сумма / ОперацияБух.Материалы.Количество
                   //|      КОНЕЦ КАК Цена,
                   //|      Ссылка.КВД КАК КВД,
                   //|      СчетКредита.Представление КАК СчетКт
                   //|  ),
                   |    ОперацияБух.ТиповаяОперация.ББУ.(СубконтоДт1) КАК пДоговор
                   //|  ОперацияБух.ЧерезКого,
                   //|  ОперацияБух.Отпустил КАК Отпустил
                   |ИЗ
                   |    Документ.ОперацияБух КАК ОперацияБух
                   |ГДЕ
                   |    ОперацияБух.Ссылка = &Ссылка";
    
                   
    Выборка = Запрос.Выполнить().Выбрать();
    
    Макет = ПолучитьМакет("Накладная0315007");
        
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДокумент.ИмяПараметровПечати = "ПарметрыПечатиНакладная0315007";
    
    ОбластьМакетаШапка     = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаСтрока    = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаИтого     = Макет.ПолучитьОбласть("Итого");
    ОбластьМакетаПодвал    = Макет.ПолучитьОбласть("Подвал");
    
    //ОбластьМакетаЗаголовок.Параметры.Заполнить(СтруктураШапки);
    
    //ТабДокумент.Вывести(ОбластьМакетаЗаголовок);
    Пока Выборка.Следующий() Цикл
        ОбластьМакетаШапка.Параметры.пНомер = Выборка.пНомер;
        ОбластьМакетаШапка.Параметры.пНаименованиеОрганизации = Выборка.пНаименованиеОрганизации;
        ОбластьМакетаШапка.Параметры.пДата = Выборка.пДата;
        ОбластьМакетаШапка.Параметры.пКодОКПО = Выборка.пКодОКПО;
        
        ОбластьМакетаШапка.Параметры.пДоговор = Выборка.пДоговор;
        
        ТабДокумент.Вывести(ОбластьМакетаШапка);
        ТабДокумент.Вывести(ОбластьМакетаСтрока);
        ТабДокумент.Вывести(ОбластьМакетаИтого);
        ТабДокумент.Вывести(ОбластьМакетаПодвал);
    КонецЦикла;
    //ФормированиеПечатныхФорм.ПечатьНакладнойМ15(ТабДокумент, Выборка, Дата);
    Возврат ТабДокумент;    
 
КонецФункции
Кто что может сказать по этой строке?
1C
1
ФормированиеПечатныхФорм.ПечатьНакладнойМ15(ТабДокумент, Выборка, Дата);
Используется в документах Внутреннее перемещение материалов - Печать "Накладная М15". Можно ли использовать её возможности во внешней печатной форме? Как? Или как она формирует печатную форму - где найти?
Ответ: Все сделал:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Функция Печать0315007()
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    Запрос = Новый Запрос;
    
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.Ссылка);
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    ОперацияБух.Номер КАК пНомер,
                   |    ОперацияБух.Дата КАК пДата,
                   |    ОперацияБух.Учреждение.НаименованиеПолное КАК пНаименованиеОрганизации,
                   |    ОперацияБух.Учреждение.КодОКПО КАК пКодОКПО
                   //|  ОперацияБух.ЦМООтправитель.Подразделение.Представление КАК пПодразделениеОтправитель,
                   //|  ВЫБОР
                   //|      КОГДА ОперацияБух.Контрагент.НаименованиеПолное = """"
                   //|          ТОГДА ОперацияБух.Контрагент.Представление
                   //|      ИНАЧЕ ОперацияБух.Контрагент.НаименованиеПолное
                   //|  КОНЕЦ КАК пКонтрагент,
                   //|  ОперацияБух.Руководитель КАК Руководитель,
                   //|  ОперацияБух.Руководитель.Контрагент.Фамилия КАК РуководительФамилия,
                   //|  ОперацияБух.Руководитель.Контрагент.Имя КАК РуководительИмя,
                   //|  ОперацияБух.Руководитель.Контрагент.Отчество КАК РуководительОтчество,
                   //|  ОперацияБух.ГлавныйБухгалтер.Контрагент.Фамилия КАК ГлавныйБухгалтерФамилия,
                   //|  ОперацияБух.ГлавныйБухгалтер.Контрагент.Имя КАК ГлавныйБухгалтерИмя,
                   //|  ОперацияБух.ГлавныйБухгалтер.Контрагент.Отчество КАК ГлавныйБухгалтерОтчество,
                   //|  ОперацияБух.Материалы.(
                   //|      НомерСтроки,
                   //|      ВЫБОР
                   //|          КОГДА ОперацияБух.Материалы.Номенклатура.НаименованиеПолное = """"
                   //|              ТОГДА ОперацияБух.Материалы.Номенклатура.Представление
                   //|          ИНАЧЕ ОперацияБух.Материалы.Номенклатура.НаименованиеПолное
                   //|      КОНЕЦ КАК пНоменклатура,
                   //|      Номенклатура.НоменклатурныйНомер КАК пНоменклатурныйНомер,
                   //|      Номенклатура.Код КАК пКодАналитики,
                   //|      ЕдиницаИзмерения.Представление КАК пЕдиница,
                   //|      ЕдиницаИзмерения.Код КАК пКодЕдиницы,
                   //|      Количество КАК пКоличество,
                   //|      Сумма КАК пСуммаБезНДС,
                   //|      0 КАК пСуммаНДС,
                   //|      Сумма КАК пВсего,
                   //|      ВЫБОР
                   //|          КОГДА ОперацияБух.Материалы.Количество = 0
                   //|              ТОГДА 0
                   //|          ИНАЧЕ ОперацияБух.Материалы.Сумма / ОперацияБух.Материалы.Количество
                   //|      КОНЕЦ КАК Цена,
                   //|      Ссылка.КВД КАК КВД,
                   //|      СчетКредита.Представление КАК СчетКт
                   //|  ),
                   //|  ОперацияБух.ТиповаяОперация.ББУ.(СубконтоДт1) КАК пДоговор
                   //|  ОперацияБух.ЧерезКого,
                   //|  ОперацияБух.Отпустил КАК Отпустил
                   |ИЗ
                   |    Документ.ОперацияБух КАК ОперацияБух
                   |ГДЕ
                   |    ОперацияБух.Ссылка = &Ссылка";
    
                   
    Выборка = Запрос.Выполнить().Выбрать();
    
    Макет = ПолучитьМакет("Накладная0315007");
        
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДокумент.ИмяПараметровПечати = "ПарметрыПечатиНакладная0315007";
    
    ОбластьМакетаШапка     = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаСтрока    = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаИтого     = Макет.ПолучитьОбласть("Итого");
    ОбластьМакетаПодвал    = Макет.ПолучитьОбласть("Подвал");
    
    КолСтр = 0;
    Колитог = 0;
    Пока Выборка.Следующий() Цикл
        ОбластьМакетаШапка.Параметры.пНомер = Выборка.пНомер;
        ОбластьМакетаШапка.Параметры.пНаименованиеОрганизации = Выборка.пНаименованиеОрганизации;
        ОбластьМакетаШапка.Параметры.пДата = Выборка.пДата;
        ОбластьМакетаШапка.Параметры.пКодОКПО = Выборка.пКодОКПО;
        ОбластьМакетаШапка.Параметры.пДоговор = "договор №";
        ОбластьМакетаШапка.Параметры.пКонтрагент = "ГБУЗ РБ Клиническая больница №1";
        ТабДокумент.Вывести(ОбластьМакетаШапка);
        Наборы = РегистрыБухгалтерии.ЕПСБУ.ВыбратьПоРегистратору(СсылкаНаОбъект.Ссылка);
        Пока Наборы.Следующий() Цикл
        КолИтог = КолИтог + Наборы.Сумма;
        ОбластьМакетаСтрока.Параметры.пСуммаБезНДС = Наборы.Сумма;
        ОбластьМакетаСтрока.Параметры.пВсего = Наборы.Сумма;
        ОбластьМакетаСтрока.Параметры.пКоличество = Наборы.КоличествоКт;
        ОбластьМакетаСтрока.Параметры.пЦена = Строка(Число(Наборы.Сумма) / Число(Наборы.КоличествоКт) );
        
            Для Каждого Субконто ИЗ Наборы.СубконтоКт Цикл
                Если Строка(Субконто.ключ) = "Номенклатура" Тогда
                    Номен = Субконто.Значение;
                    ОбластьМакетаСтрока.Параметры.пНоменклатура = Номен;
                    ЗапросНомен = Новый Запрос;
    
                    ЗапросНомен.УстановитьПараметр("Номен", Строка(Номен));
 
                    ЗапросНомен.Текст = "ВЫБРАТЬ
                    |Номенклатура.Наименование,
                    |Номенклатура.ЕдиницаИзмерения.Наименование КАК пЕдиница
                    |ИЗ
                    |Справочник.Номенклатура КАК Номенклатура
                    |ГДЕ 
                    |Номенклатура.Наименование = &Номен";
                    
                    ВыборкаНомен = ЗапросНомен.Выполнить().Выбрать();
                    Пока ВыборкаНомен.Следующий() Цикл
                        ОбластьМакетаСтрока.Параметры.пЕдиница = ВыборкаНомен.пЕдиница;
                    КонецЦикла;
                КонецЕсли;
 
                Если Строка(Субконто.ключ) = "Центры материальной ответственности" Тогда
                    МногострочнаяСтрока = СтрЗаменить(Субконто.Значение, "-",Символы.ПС);
                    ОбластьМакетаПодвал.Параметры.пФИООтпустил = СтрПолучитьСтроку(МногострочнаяСтрока,1);
                КонецЕсли;
            КонецЦикла;
            
            Для Каждого СубконтоДт ИЗ Наборы.СубконтоДт Цикл
                Если Строка(СубконтоДт.ключ) = "КЭК" Тогда
                    ИтоговаяСтрока = СтрЗаменить(Строка(Наборы.СчетДт), ".",Символы.ПС);
                    ОбластьМакетаСтрока.Параметры.пСчетКредита = Строка(Наборы.КБКДт) + Строка(СубконтоДт.Значение) + Строка(СтрПолучитьСтроку(ИтоговаяСтрока,1)) + Строка(СтрПолучитьСтроку(ИтоговаяСтрока,2));
                КонецЕсли;
            КонецЦикла;
        КолСтр = КолСтр + 1;
        ТабДокумент.Вывести(ОбластьМакетаСтрока);
    КонецЦикла;
    
        ФормСтрокаКол = "Л = ru_RU; НД = Ложь";
        ФормСтрокаИтог = "Л = ru_RU; ДП = истина";
        
        ПарПредИтог = "руб.,руб.,руб.,м,коп.,коп.,коп.,ж,2";
        
        ОбластьМакетаПодвал.Параметры.пКоличествоНаименованийПрописью = ЧислоПрописью(КолСтр, ФормСтрокаКол ,",,,,,,,,0" );
        ОбластьМакетаПодвал.Параметры.пВсегоИтогоПрописью = ЧислоПрописью(КолИтог, ФормСтрокаИтог, ПарПредИтог);
        
        ОбластьМакетаитого.Параметры.пСуммаБезНДСИтого = КолИтог;
        ОбластьМакетаитого.Параметры.пВсегоИтого = КолИтог;
        
        ОбластьМакетаПодвал.Параметры.пФИОБухгалтер = "Л.С. Теренина";
        ОбластьМакетаПодвал.Параметры.пФИОРуководитель = "А.Е.Огарков";
        ОбластьМакетаПодвал.Параметры.пДолжностьРуководитель = "Гл.врач";
        
        
        
        ТабДокумент.Вывести(ОбластьМакетаИтого);
        ТабДокумент.Вывести(ОбластьМакетаПодвал);
    КонецЦикла;
    
    Возврат ТабДокумент;    
    
КонецФункции
Конечно же можно оптимизировать код) Если вдруг кто решится, будет хорошо.

Внешняя печатная форма "накладная М15" для документа Операция бухгалтерская. Бухгалтерский учет -> Ввести операцию вручную. БГУ 1.0.39.6
Вопрос: Загрузка и выгрузка табличной части документа в Excel

Учусь.

Есть Документ в котором Табличные Части -> ПереченьТоваров с Реквизитами Товар Цена Количество Сумма.
Создано 2 документа.
Открываю один из них.
На форме добавлена кнопка Выгрузить в файл.
Модуль:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
&НаКлиенте
Процедура Команда1(Команда)
    // Вставить содержимое обработчика.
    Передача();
КонецПроцедуры
 
&НаСервереБезКонтекста  
Процедура Передача()  
    ApplicationExcel= Новый COMОбъект("Excel.Application");  
    ApplicationExcel.Visible = Истина;  
    ApplicationExcel.Workbooks.Open ("E:\1C\Клиенты.xlsx");
    Док=Документы.Оприходование;
    i=2;  
    //Сообщить( Док.ТекущийДокумент());
 
    
    КоличетсвоСтрок = ЭтотОбъект.ПереченьТоваров.Количество();
    Если КоличествоСтрок <> 0 Тогда
    Для каждого Строчка из ЭтотОбъект.ПереченьТоваров Цикл
        ApplicationExcel.Sheets(1).Cells(i, 1).Value=Строчка.Товар;
ApplicationExcel.Sheets(1).Cells(i, 2).Value=Строчка.Количество;
        i=i+1;
    КонецЦикла
    КонецЕсли
        
        //Пока Выборка.ПолучитьСтроку() > 0 Цикл    
        //ApplicationExcel.Sheets(1).Cells(i, 1).Value=Выборка.Товар; //тут пишет что нет такого реквизита
        
        //i=i+1;
    //КонецЦикла;
КонецПроцедуры
Не получается. В последней попытке, приведенной, я даже не могу открыть документ. {Переменная ЭтотДокумент не определена}. Подскажите, помогите, первый день в 1С8.3, прошу с кодом пояснением. Либо как обратиться к полям/реквизитам открытого пользователем документа. В закомментированном коде есть другая реализация, ошибку также указал.
Ответ: Документ Оприходование:
Данные:
Реквизиты: Фирмы, Филиалы
Табличные части: ПереченьТоваров [Товар, Цена, Количество, Сумма]
Форма: Добавлена одна команда - Команда1
Добавлена одна Кнопка (для этой команды)
Модуль:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
&НаКлиенте
Процедура ПереченьТоваровКоличествоПриИзменении(Элемент)
    СтрТабЧасти=Элементы.ПереченьТоваров.ТекущиеДанные;
    СтрТабЧасти.Сумма=СтрТабЧасти.Цена*СтрТабЧасти.Количество;
КонецПроцедуры
 
&НаКлиенте
Процедура ПереченьТоваровЦенаПриИзменении(Элемент)
    СтрТабЧасти=Элементы.ПереченьТоваров.ТекущиеДанные;
    СтрТабЧасти.Сумма=СтрТабЧасти.Цена*СтрТабЧасти.Количество;
КонецПроцедуры
 
&НаКлиенте
Процедура Команда1(Команда)
    // Вставить содержимое обработчика.
    Передача();
КонецПроцедуры
 
&НаСервере
Процедура Передача()  
    ApplicationExcel= Новый COMОбъект("Excel.Application");  
    ApplicationExcel.Visible = Истина;  
    ApplicationExcel.Workbooks.Open ("E:\1C\Клиенты.xlsx");
    ТЧ=Объект.ПереченьТоваров;
    i=2;  
    
    КоличествоСтрок = ТЧ.Количество();
    //Сообщить (КоличествоСтрок);
    Если КоличествоСтрок <> 0 Тогда
    Для каждого Строчка из ТЧ Цикл
        ApplicationExcel.Sheets(1).Cells(i, 1).Value=Строчка.Товар;
        i=i+1;
    КонецЦикла
    КонецЕсли
        
        //Пока Выборка.ПолучитьСтроку() > 0 Цикл    
        //ApplicationExcel.Sheets(1).Cells(i, 1).Value=Выборка.Товар;
        
        //i=i+1;
    //КонецЦикла;
КонецПроцедуры
Сейчас ошибка {Произошла исключительная ситуация 0x800a03ec}
Вопрос: Печать Табличного документа

Доброго времени суток! Хочу распечатать 2 документа на 1 странице. Вывожу первый документ в Табличный документ -> проверяю помещается ли 2 документ на страницу методом "ПроверитьВывод"-> если помещается печатаю, если нет, то вывожу ГоризонтальныйРазделитель и печатаю на двух. На одном компьютере печатается на 1 страницу, а на другом выводится в 2 страницы. При чем в печати принтер по умолчанию один и тот же. В чем может быть причина?
Ответ:
В настройках полей/масштаба печати/etc. у каждого пользователя.
Вопрос: Проблема с печатью нескольких печатных форм в 1 табличном документе

Имеется обработка с табличной частью, где для строки можно выбрать макет печатной формы и при нажатии кнопки печать все печатные формы выводятся в 1 табличный документ.

ТабДокумент = Новый ТабличныйДокумент;

Для Каждого стр из ТЗ Цикл
	  ПечатьМакета(стр.ИмяМакета);			
КонецЦикла;
		
ТабДокумент.Показать();


Проблема в том, что если печатать печатные формы по отдельности, они выходят как нужно, а когда несколько разных, то появляются лишние пустые страницы, некоторые печатные формы разбиваются на 2, т.к. почему-то не влазят по ширине.
Ответ:
Владимир Лазурко
Твоя тема? тынц


Хмм, тема не моя, но надо попробовать, вроде как на 2 макетах получилось, но только если в параметрах печати Масштаб поставить "по ширине страницы". Спасибо за наводку.
Вопрос: Удалить области табличного документа

Добрый вечер. Такая проблема: есть документ "прием специалиста", где пациенту назначают план лечения, и одно из назначений, например, "инъекция кеторола". Пока у данного лечения статус "назначено", резервируется определенное количество препарата и находится в резерве до тех пор, пока у лечения не будет статус "выполнено" или "отменено". При смене статуса на "выполнено" произойдет списание препарата.
Отсюда в отчете по учету препаратов появляется строка с приходом, в которой количество = 0. От этих строк надо избавиться.
Пыталась выводить строку, и делать проверку, что если там приход с 0, то удалить эту область, но не получилось.
Если задавать условие, то если приход = 0, тогда пропустить, то тогда под это условие попадают записи, у которых ранее был резерв, но его либо списали, либо отменили.
Как можно избавиться от таких строк?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
Процедура ЗаполнитьЖурналДляПечати(ТабДок, ТЗ)
    
    Макет = ПолучитьМакет("МакетПрепарат");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    
    Пер = "";
    Ном = "";
    СкладПарам = "";
    Расход = ЛОЖЬ;  
    СчитатьОстатки = "";
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОстаткиТоваровКомпании.Номенклатура КАК Преп,
                   |    ОстаткиТоваровКомпании.Регистратор КАК Док,
                   |    ОстаткиТоваровКомпании.ВидДвижения КАК Движение,
                   |    ОстаткиТоваровКомпании.Период КАК Дата,
                   |    ОстаткиТоваровКомпании.СкладКомпании КАК СкладКомпании,
                   |    ОстаткиТоваровКомпании.Пациент КАК Пациент,
                   |    ОстаткиТоваровКомпании.Количество КАК Кол,
                   |    ОстаткиТоваровКомпании.Регистратор.Автор КАК Отв,
                   |    ОстаткиТоваровКомпании.Регистратор.Контрагент КАК Контр,
                   |    ОстаткиТоваровКомпании.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                   |    ОстаткиТоваровКомпании.Регистратор.Пациент КАК ПриемПациент
                   |ИЗ
                   |    РегистрНакопления.ОстаткиТоваровКомпании КАК ОстаткиТоваровКомпании";
                Если ЗначениеЗаполнено(Препарат) И НЕ ЗначениеЗаполнено(Склад) Тогда
                    Запрос.Текст = Запрос.Текст + "   
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ОстаткиТоваровКомпании.Номенклатура = &Преп
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               ИначеЕсли ЗначениеЗаполнено(Склад) И НЕ ЗначениеЗаполнено(Препарат) Тогда
                   Запрос.Текст = Запрос.Текст + "
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ОстаткиТоваровКомпании.СкладКомпании = &Склад
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               ИначеЕсли ЗначениеЗаполнено(Склад) И ЗначениеЗаполнено(Препарат) Тогда
                   Запрос.Текст = Запрос.Текст + "
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ОстаткиТоваровКомпании.Номенклатура = &Преп
                   |    И ОстаткиТоваровКомпании.СкладКомпании = &Склад
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               Иначе Запрос.Текст = Запрос.Текст + "
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода 
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               КонецЕсли;
               
    Запрос.УстановитьПараметр("Преп", Препарат);            
    Запрос.УстановитьПараметр("Склад", Склад);              
    Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));   
    Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
    
    Выборка1 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
    Пока Выборка1.Следующий() Цикл          
        Ном = Выборка1.Преп;        
        ОбластьШапка.Параметры.Препарат = Выборка1.Преп;
        ОбластьШапка.Параметры.Ед = Выборка1.Преп.БазоваяЕдиницаИзмерения;
        ТабДок.Вывести(ОбластьШапка);   
        Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
        
        Пока Выборка2.Следующий() Цикл
                        
            Выборка3 = Выборка2.Выбрать();
            
            Пока Выборка3.Следующий() Цикл
                Хар = Выборка3.ХарактеристикаНоменклатуры;              
                //Если запись одна, берем остатки из регистра
                Если Выборка3.Количество() <= 1 Тогда
                                        
                    Пер = Выборка3.Дата;
                    СкладПарам = Выборка3.СкладКомпании; 
                    
                    Стр = ТЗ.Добавить();
                    Стр.Препарат = Выборка3.Преп;
                    Стр.Склад = Выборка3.СкладКомпании;
                    ЗаполнитьИтогиТЗ(ном, складпарам, пер, стр); 
                    Если Стр.Остаток = Неопределено Тогда 
                        Стр.Остаток = 0; 
                    КонецЕсли;
                    
                    
                    Если Выборка3.Движение = ВидДвиженияНакопления.Расход Тогда
                        ОбластьСтрока.Параметры.Расх = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаРасх = Формат(Выборка3.Дата, "ДЛФ=Д");
                        
                        Если Не ЗначениеЗаполнено(Выборка3.Пациент) Тогда
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.ПриемПациент;
                        Иначе                           
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.Пациент;
                        КонецЕсли;
 
                        ОбластьСтрока.Параметры.РасхСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокРасх = Выборка3.Док;                         
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Прих = "";
                        КонецЕсли;                      
                        Расход = ИСТИНА;
                        ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                        Если ОбластьСтрока.Параметры.КолРасх = Неопределено ИЛИ ОбластьСтрока.Параметры.КолРасх = "" Тогда
                            ОбластьСтрока.Параметры.КолРасх = 0;
                        КонецЕсли;
                        ОбластьСтрока.Параметры.РасхОст = ОбластьСтрока.Параметры.КолРасх - ОбластьСтрока.Параметры.Расх;                       
                    Иначе                       
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Расх = "";
                        КонецЕсли;
                        Областьстрока.Параметры.Прих = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаПрих = Формат(Выборка3.Дата, "ДЛФ=Д");
                        ОбластьСтрока.Параметры.КонтрПрих = Выборка3.Контр;
                        ОбластьСтрока.Параметры.ПрихСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокПрих = Выборка3.Док;
                        Расход = ЛОЖЬ;                      
                        ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                        Если ОбластьСтрока.Параметры.КолПрих = Неопределено ИЛИ ОбластьСтрока.Параметры.КолПрих = "" Тогда
                            ОбластьСтрока.Параметры.КолПрих = 0;
                        КонецЕсли;
                        ОбластьСтрока.Параметры.ПрихОст = ОбластьСтрока.Параметры.КолПрих + ОбластьСтрока.Параметры.Прих;                       
                    КонецЕсли;
                    
                Иначе
                //иначе рассчитываем остатки вручную по каждому препарату
                 
                    Пер = Выборка3.Дата;
                    СкладПарам = Выборка3.СкладКомпании;
                    
                    Стр = ТЗ.Добавить();
                    Стр.Препарат = Выборка3.Преп;
                    Стр.Склад = Выборка3.СкладКомпании;                 
                    ЗаполнитьИтогиТЗ(ном, складпарам, пер, стр);
                    Если Стр.Остаток = Неопределено Тогда 
                        Стр.Остаток = 0; 
                    КонецЕсли;
                    
                    Если Выборка3.Движение = ВидДвиженияНакопления.Расход Тогда
                        ОбластьСтрока.Параметры.Расх = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаРасх = Формат(Выборка3.Дата, "ДЛФ=Д");
                        
                        Если Не ЗначениеЗаполнено(Выборка3.Пациент) Тогда
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.ПриемПациент;
                        Иначе                           
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.Пациент;
                        КонецЕсли;
 
                        ОбластьСтрока.Параметры.РасхСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокРасх = Выборка3.Док;                         
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Прих = "";
                        КонецЕсли;                          
                        Расход = ИСТИНА;
                        
                        Если СчитатьОстатки = "" Тогда
                            ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                            Если ОбластьСтрока.Параметры.КолРасх = Неопределено или ОбластьСтрока.Параметры.КолРасх = "" Тогда
                                ОбластьСтрока.Параметры.Колрасх = 0;
                            КонецЕсли;
                            ОбластьСтрока.Параметры.РасхОст = ОбластьСтрока.Параметры.КолРасх - ОбластьСтрока.Параметры.Расх;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.РасхОст);
                        Иначе
                            ОбластьСтрока.Параметры.КолРасх = СчитатьОстатки;
                            ОбластьСтрока.Параметры.РасхОст = СчитатьОстатки - ОбластьСтрока.Параметры.Расх;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.РасхОст);
                        КонецЕсли;  
                        
                    Иначе 
                        
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Расх = "";
                        КонецЕсли;  
                        ОбластьСтрока.Параметры.Прих = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаПрих = Формат(Выборка3.Дата, "ДЛФ=Д");
                        ОбластьСтрока.Параметры.КонтрПрих = Выборка3.Контр;
                        ОбластьСтрока.Параметры.ПрихСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокПрих = Выборка3.Док;
                        Расход = ЛОЖЬ;                      
                        Если СчитатьОстатки = "" Тогда
                            ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                            Если ОбластьСтрока.Параметры.КолПрих = Неопределено или ОбластьСтрока.Параметры.КолПрих = "" Тогда
                                ОбластьСтрока.Параметры.КолПрих = 0;
                            КонецЕсли;
                            ОбластьСтрока.Параметры.ПрихОст = ОбластьСтрока.Параметры.КолПрих + ОбластьСтрока.Параметры.Прих;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.ПрихОст);
                        Иначе
                            ОбластьСтрока.Параметры.КолПрих = СчитатьОстатки;
                            ОбластьСтрока.Параметры.ПрихОст = СчитатьОстатки + ОбластьСтрока.Параметры.Прих;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.ПрихОст);
                        КонецЕсли;                                              
                    КонецЕсли;                  
                КонецЕсли;
                
            ТабДок.Вывести(ОбластьСтрока,3);
            ОчиститьСтрокуЖурналаДляПечати(ОбластьСтрока);
 
            КонецЦикла;
            
            СчитатьОстатки = "";
            ОбработкаПрерыванияПользователя(); 
            
        КонецЦикла;     
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЦикла;
    
    //сворачиваем дубли в таблице итогов
    ТЗ.Свернуть("Склад, Препарат, остаток");
    
КонецПроцедуры
 
Процедура ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока)
    
    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |   ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура,
                    |   ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК СкладКомпании,
                    |   ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры,
                    |   ОстаткиТоваровКомпанииОстатки.Пациент,
                    |   ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                    |   ОстаткиТоваровКомпанииОстатки.РезервОстаток,
                    |   ОстаткиТоваровКомпанииОстатки.СуммаРознОстаток
                    |ИЗ
                    |   РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&пер, ) КАК ОстаткиТоваровКомпанииОстатки
                    |ГДЕ
                    |   ОстаткиТоваровКомпанииОстатки.Номенклатура = &преп
                    |   И ОстаткиТоваровКомпанииОстатки.СкладКомпании = &Склад 
                    |ИТОГИ
                    |   СУММА(КоличествоОстаток)
                    |ПО
                    |   Номенклатура" ;
                    
    Запрос.УстановитьПараметр("склад", СкладПарам);
    Запрос.УстановитьПараметр("пер", Пер);
    Запрос.УстановитьПараметр("преп", Ном);
    
    Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Выборка.Следующий() Цикл
        Если Расход = ИСТИНА Тогда
            ОбластьСтрока.Параметры.КолРасх = Выборка.КоличествоОстаток;
        Иначе 
            ОбластьСтрока.Параметры.КолПрих = Выборка.КоличествоОстаток;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
Ответ: philophobia, сформулируйте конкретное условие, по которому записи в табличном документе(или в запросе, обходе выборки...) надо отсеить.
И что с условием: движение = приход и количествоприхода = 0 и количестворезерва <>0? Может надо проверять, чтобы количестворезерва =0? - тогда пропускаем: движение = приход и количествоприхода = 0 и количестворезерва = 0.
Вопрос: Вывод на печать табличных частей документов

Здравствуйте
Есть документ, в котором две табличные части.
В первой ТЧ: Работник и ДатаРождения
Во второй ТЧ: Работник и Фактор

На макете печатной формы должно выводиться для нескольких работников с инф: работник, ДР, и фактор.
Выводит все странно. Сначала фамилии работников. А потом последнюю фамилию в списке со всеми факторами.
Оно в принципе и логично. Как обойти это дело?

Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Процедура Закл(ТабДок, Ссылка) Экспорт
    
        ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
        ТабДок.АвтоМасштаб = Истина;
        ТабДок.ОтображатьСетку = Ложь;
        ТабДок.ПолеСверху = 5;
        ТабДок.ПолеСнизу = 5;
        Макет = ПолучитьОбщийМакет("ПФ");   
        ОбластьЛист = Макет.ПолучитьОбласть("Лист"); 
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |   Док.Работники.(
        |       Работник,
        |       Работник.ДатаРождения
        |   ),
        |   Док.Фактор.(
        |       Фактор
        |   )
        |ИЗ
        |   Документ.Док КАК Док
        |ГДЕ
        |   Док.Ссылка В(&Ссылка)";
        
        Запрос.Параметры.Вставить("Ссылка", Ссылка);
        Выборка = Запрос.Выполнить().Выбрать();
        ТабДок.Очистить();
        
        Пока Выборка.Следующий() Цикл 
            
            ВыборкаРаботники = Выборка.Работники.Выбрать();
            ВыборкаФактор = Выборка.Фактор.Выбрать();
            
            Пока ВыборкаРаботники.Следующий() Цикл
                
                ОбластьЛист.Параметры.Заполнить(ВыборкаРаботники); 
                ТабДок.Вывести(ОбластьЛист, ВыборкаРаботники.Уровень());
                
            КонецЦикла;
            
            Пока ВыборкаФактор.Следующий() Цикл
    
                ОбластьЛист.Параметры.Заполнить(ВыборкаФактор); 
                ТабДок.Вывести(ОбластьЛист, ВыборкаФактор.Уровень());
                
            КонецЦикла;         
            
                                    
            ВставлятьРазделительСтраниц = Истина;
            
        КонецЦикла;
 
КонецПроцедуры
Ответ: Что-то даже так не выходит.
Может у кого-то есть пример с выводом на печать где, например, фамилия выводится, а рядом список значений, привязанных к этой фамилии?
Вопрос: Программное заполнение табличной части документа из табличной части справочника

Доброго!
Ситуация, поставившая меня в тупик.
Имеем 1с 8.2 УФ
Имеем справочник "Работ"
Имеем документ с табличной частью, с реквизитом в табличной части "Работа"
Имеем справочник Регламентных работ, в каждом из элементов справочника есть табличная часть с реквизитом "Работа"(перечень работ - "набор работ")

Смысл всего задуманного - "пресеты", в конкретном случае "пресеты" работ с оборудованием заказчика.

Т.е. в идеале это команда на форме, с помощью которой открывается форма выбора элемента справочника(Регламентных работ), и в последствии происходит программное заполнение табличной части работ из табличной части справочника Регламентных работ.

Начинал создавать команду, но все время упираюсь в ошибки получения формы выбора...
На клиенте получается форму не получить...

Направьте, пожалуйста, начинающего на путь истинный.
Заранее спасибо
Ответ: GoodR, Это не рядом. Это вы сели в автомобиль и завели двигатель. Пока еще даже не трогались. Так что .... далеко не рядом.
В примере вам надо последний код, по тексту начинается с "Для завершения подбора создана команда формы, с обработчиком, выполняющим оповещение о выборе:" Вот это то что вам надо реализовать в своей базе