Программное создание, заполнение документа и открытие формы (УП, тонкий клиент) Чтобы программно заполнить документ по кнопке, делаем примерно следующее:
1. на форму, в нашем случае документа, добавляем кнопку (Команда и у нее процедура СоздатьПеремещение(Команда))
2. в ее обработчике пишем код создания документа перемещение товаров и заполняем его
Код 1C v 8.3 &НаСервере
Функция СоздатьПеремещениеНаСервере(ДанныеФормы)
ДанныеФормы. Дата= ТекущаяДата( ) ;
ДанныеФормы. СкладОтправитель = Справочники. Склады. НайтиПоНаименованию( "Склад гарантийного обслуживания" ) ;
ДанныеФормы. СкладПолучатель = Справочники. Склады. НайтиПоНаименованию( "Склад гарантийных" ) ;
новСП= Новый СписокЗначений; н= 0 ;
Для Каждого стр из Объект. ДанныеПоГН Цикл
Если стр. ДанныеПроверки= Перечисления. СтатусПроверкиГарантии. зн0 тогда
новСП. Добавить( Строка( стр. НомерЗаводской) ) ; н= н+ 1 ;
КонецЕсли ;
КонецЦикла ;
Если н> 0 Тогда
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугСерии.Серия КАК Серия,
| РеализацияТоваровУслугСерии.Ссылка.Дата КАК ДатаОтгрузки,
| РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
| РеализацияТоваровУслугСерии.Ссылка КАК Возврат,
| РеализацияТоваровУслугСерии.Номенклатура,
| ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугСерии.Серия) КАК СерияСТР
|ИЗ
| Документ.ВозвратТоваровОтКлиента.Серии КАК РеализацияТоваровУслугСерии
|ГДЕ
| РеализацияТоваровУслугСерии.Серия В
| (ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
| ГДЕ
| СерииНоменклатуры.Наименование В (&Наименование))
|
|УПОРЯДОЧИТЬ ПО
| Серия
|АВТОУПОРЯДОЧИВАНИЕ" ;
Запрос. УстановитьПараметр( "Наименование" , новСП) ;
ТаблицаЗапроса = Запрос. Выполнить( ) . Выгрузить( ) ;
Для каждого стр из новСП Цикл
НайденнаяСтрока= ТаблицаЗапроса. Найти( стр. Значение, "СерияСТР" ) ;
Если НайденнаяСтрока = Неопределено Тогда
Иначе
нстр= ДанныеФормы. Товары. Добавить( ) ;
нстр. Номенклатура = НайденнаяСтрока. Номенклатура;
нстр. Серия= НайденнаяСтрока. Серия;
нстр. КоличествоУпаковок= 1 ;
нстр. Количество= 1 ;
нстр. СтатусУказанияСерий= 2 ;
нстр. СтатусУказанияСерийОтправитель= 2 ;
нстр. СтатусУказанияСерийПолучатель= 2 ;
нстр= ДанныеФормы. Серии. Добавить( ) ;
нстр. Номенклатура = НайденнаяСтрока. Номенклатура;
нстр. Серия= НайденнаяСтрока. Серия;
нстр. Количество= 1 ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
Возврат ДанныеФормы;
КонецФункции
&НаКлиенте
Процедура СоздатьПеремещение(Команда)
Форма= ПолучитьФорму( "Документ.ПеремещениеТоваров.ФормаОбъекта" ) ;
ДанныеФормы= Форма. Объект;
ДанныеФормы= СоздатьПеремещениеНаСервере( ДанныеФормы) ;
КопироватьДанныеФормы( ДанныеФормы, Форма. Объект) ;
Форма. Открыть( ) ;
КонецПроцедуры
Категория:
Документы Вывод результата запроса на форму УП в таблицу значений (аналог СоздатьКолонки() для УП) при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки():
Код 1C v 8.х Процедура ПоискНажатие(Элемент)
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ДокументоОборот.Этап,
| ДокументоОборот.Отдел,
| ДокументоОборот.ФИО,
| ДокументоОборот.ДатаВремя КАК Дата_Время,
| ДокументоОборот.Документы,
| ДокументоОборот.Примечание,
| ДокументоОборот.Доставка
|ИЗ
| РегистрСведений.ДокументоОборот КАК ДокументоОборот
|ГДЕ
| ДокументоОборот.Документы ПОДОБНОДокументы
| И ДокументоОборот.Доставка.Дата МЕЖДУДатаН ИДатаК
|
|УПОРЯДОЧИТЬ ПО
| ДокументоОборот.ДатаВремя" ;
Запрос. УстановитьПараметр( "Документы" , "%" + СокрЛП( Строка( СтрокаПоиска) ) + "%" ) ;
Запрос. УстановитьПараметр( "ДатаК" , КонПериода) ;
Запрос. УстановитьПараметр( "ДатаН" , НачПериода) ;
Рез= Запрос. Выполнить( ) ;
НайденДок = рез. Выгрузить( ) ;
ЭлементыФормы. НайденДок. СоздатьКолонки( ) ;
В управляемом приложении метод СоздатьКолоки() не доступен, ниже представлена процедура, которая отображает на управляемой форме содержимое таблицы значений переданное ей в качестве параметра:
Пример формы:
Код вывода результата запроса на управляемую форму :
Код 1C v 8.2 УП &НаСервере
Процедура СоздатьТаблицуФормы(Знач ИмяПоляТаблицыФормы, Знач ИмяРеквизитаДанныеФормыКоллекция, Знач ТаблицаЗначений)
Если Элементы. Найти( ИмяПоляТаблицыФормы) = Неопределено Тогда
ЭлементРеквизита = Элементы. Добавить( ИмяПоляТаблицыФормы, Тип( "ТаблицаФормы" ) , ) ;
ЭлементРеквизита. ПутьКДанным = ИмяРеквизитаДанныеФормыКоллекция;
КонецЕсли ;
УдаляемыеРеквизиты = Новый Массив;
РеквизитыДляУдаления = ПолучитьРеквизиты( ИмяРеквизитаДанныеФормыКоллекция) ;
Для Каждого РеквизитУдаления Из РеквизитыДляУдаления Цикл
УдаляемыеРеквизиты. Добавить( ИмяРеквизитаДанныеФормыКоллекция+ "." + РеквизитУдаления. Имя) ;
Элементы. Удалить( Элементы[ИмяПоляТаблицыФормы+ РеквизитУдаления. Имя]) ;
КонецЦикла ;
ДобавляемыеРеквизиты = Новый Массив;
Для каждого Колонка Из ТаблицаЗначений. Колонки Цикл
ДобавляемыеРеквизиты. Добавить( Новый РеквизитФормы( Колонка. Имя, Колонка. ТипЗначения, ИмяРеквизитаДанныеФормыКоллекция, Колонка. Заголовок) ) ;
КонецЦикла ;
ИзменитьРеквизиты( ДобавляемыеРеквизиты, УдаляемыеРеквизиты) ;
Для каждого Колонка Из ТаблицаЗначений. Колонки Цикл
ЭлементРеквизита = Элементы. Добавить( ИмяПоляТаблицыФормы + Колонка. Имя, Тип( "ПолеФормы" ) , Элементы[ИмяПоляТаблицыФормы]) ;
ЭлементРеквизита. ПутьКДанным = ИмяРеквизитаДанныеФормыКоллекция + "." + Колонка. Имя;
ЭлементРеквизита. Вид = ВидПоляФормы. ПолеВвода;
КонецЦикла ;
ЗначениеВРеквизитФормы( ТаблицаЗначений, ИмяРеквизитаДанныеФормыКоллекция) ;
КонецПроцедуры
&НаСервере
Процедура ВПоискНаСервере()
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугСерии.Серия КАК Серия,
| РеализацияТоваровУслугСерии.Ссылка КАК Реализация,
| РеализацияТоваровУслугСерии.Ссылка.ЗаказКлиента КАК ЗаказКлиента,
| РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
| РеализацияТоваровУслугСерии.Ссылка.Договор КАК Договор
|ИЗ
| Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
|ГДЕ
| РеализацияТоваровУслугСерии.Серия В
| (ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
| ГДЕ
| СерииНоменклатуры.Наименование ПОДОБНОНаименование)
|
|УПОРЯДОЧИТЬ ПО
| Серия
|АВТОУПОРЯДОЧИВАНИЕ" ;
Запрос. УстановитьПараметр( "Наименование" , "%" + НомерФН+ "%" ) ;
РезультатЗапроса = Запрос. Выполнить( ) ;
ТаблицаЗапроса = Запрос. Выполнить( ) . Выгрузить( ) ;
СоздатьТаблицуФормы( "ТЗ" , "ТЗ" , ТаблицаЗапроса) ;
КонецПроцедуры
&НаКлиенте
Процедура ВПоиск(Команда)
ВПоискНаСервере( ) ;
КонецПроцедуры
Категория:
Управляемое приложение, Тонкий клиент Пример создания внешней печатной формы для управляемого приложения Пример создания внешней печатной формы АКТа для Бухгалтерии 3.0
1. В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл->Новый->Внешняя обработка), задаем имя.
2. В модуле обработки пишем код. Постараюсь его максимально комментировать. Главное должно быть:
функция ПечатьВнешнейПечатнойФормы табличного документа - которая выведет данные в макет функция Печать - вызывается из конфигурации! в нее передается массив печатаемых объектов и функция СведенияОВнешнейОбработке(). Она необходима для регистрации печатной формы в справочнике ДополнительныеОтчетыИОбработки, в ней собирается структура с данными для подключения формы. Эта функция, а также ряд сопутствующих ей, практически одинаковы для всех печатных форм, поэтому их можно просто копировать в новую печатную форму ничего не меняя.
Код 1C v 8.3
Функция ПечатьВнешнейПечатнойФормы(МассивОбъектов, ОбъектыПечати, Подписант) Экспорт
ТабДок = новый ТабличныйДокумент;
Макет = ПолучитьМакет( "Макет" ) ;
ОбластьШапки = Макет. ПолучитьОбласть( "Шапка" ) ;
ОбластьДанные = Макет. ПолучитьОбласть( "Данные" ) ;
ОбластьПодвал = Макет. ПолучитьОбласть( "Подвал" ) ;
Запрос = новый запрос;
Запрос. УстановитьПараметр( "МассивОбъектов" , МассивОбъектов) ;
Запрос. Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.Сумма,
| РеализацияТоваровУслугТовары.Количество,
| РеализацияТоваровУслугТовары.Цена,
| РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслугУслуги.Номенклатура,
| РеализацияТоваровУслугУслуги.Сумма,
| РеализацияТоваровУслугУслуги.Количество,
| РеализацияТоваровУслугУслуги.Цена,
| РеализацияТоваровУслугУслуги.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
|ГДЕ
| РеализацияТоваровУслугУслуги.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка" ;
ОбщаяВыборка = Запрос. Выполнить( ) . Выгрузить( ) ;
Для Каждого СсылкаНаОбъект из МассивОбъектов Цикл
ОбластьШапки. Параметры. ТекстЗаголовка = "Акт № " + СсылкаНаОбъект. Номер;
ОбластьШапки. Параметры. Организация = СсылкаНаОбъект. Организация;
ТабДок. Вывести( ОбластьШапки) ;
Отбор = Новый Структура;
Отбор. Вставить( "Ссылка" , СсылкаНаОбъект) ;
Выборка = ОбщаяВыборка. НайтиСтроки( Отбор) ;
ИтогоСумма = 0 ;
ИтогоКоличество = 0 ;
Для Каждого Стр из Выборка Цикл
ЗаполнитьЗначенияСвойств( ОбластьДанные. Параметры, Стр) ;
ИтогоСумма = ИтогоСумма + Стр. Сумма;
ИтогоКоличество = ИтогоКоличество + Стр. Количество;
ТабДок. Вывести( ОбластьДанные) ;
КонецЦикла ;
ОбластьПодвал. Параметры. ИтогоСумма = ИтогоСумма;
ОбластьПодвал. Параметры. Подписант = Подписант;
ТабДок. Вывести( ОбластьПодвал) ;
ТабДок. ВывестиГоризонтальныйРазделительСтраниц( ) ;
КонецЦикла ;
Возврат ТабДок;
КонецФункции
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью. НужноПечататьМакет( КоллекцияПечатныхФорм, "АКТПечатьВнешняя" ) Тогда
ТабличныйДокумент = ПечатьВнешнейПечатнойФормы( МассивОбъектовНазначения, ОбъектыПечати, "" ) ;
УправлениеПечатью. ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "АКТПечатьВнешняя" , "АКТ (внешний)" , ТабличныйДокумент) ;
ИначеЕсли УправлениеПечатью. НужноПечататьМакет( КоллекцияПечатныхФорм, "АКТПечатьВнешняяИван" ) Тогда
ТабличныйДокумент = ПечатьВнешнейПечатнойФормы( МассивОбъектовНазначения, ОбъектыПечати, "Иванов А.Ю." ) ;
УправлениеПечатью. ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "АКТПечатьВнешняяИван" , "АКТ (внешний) Иванов" , ТабличныйДокумент) ;
ИначеЕсли УправлениеПечатью. НужноПечататьМакет( КоллекцияПечатныхФорм, "АКТПечатьВнешняяПетр" ) Тогда
ТабличныйДокумент = ПечатьВнешнейПечатнойФормы( МассивОбъектовНазначения, ОбъектыПечати, "Петров В.С." ) ;
УправлениеПечатью. ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "АКТПечатьВнешняяПетр" , "АКТ (внешний) Петров" , ТабличныйДокумент) ;
КонецЕсли ;
КонецПроцедуры
#Область СведенияОВнешнейОбработке
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации. Вставить( "Вид" , "ПечатнаяФорма" ) ;
МассивНазначений = Новый Массив;
МассивНазначений. Добавить( "Документ.РеализацияТоваровУслуг" ) ;
ПараметрыРегистрации. Вставить( "Назначение" , МассивНазначений) ;
ПараметрыРегистрации. Вставить( "Наименование" , "АКТ (Внешний)" ) ;
ПараметрыРегистрации. Вставить( "БезопасныйРежим" , ЛОЖЬ ) ;
ПараметрыРегистрации. Вставить( "Версия" , "1.0" ) ;
ПараметрыРегистрации. Вставить( "Информация" , "Дополнительная печатная форма" ) ;
ТаблицаКоманд = ПолучитьТаблицуКоманд( ) ;
ДобавитьКоманду( ТаблицаКоманд, "Внешний: АКТ" , "АКТПечатьВнешняя" , "ВызовСерверногоМетода" , Истина , "ПечатьMXL" ) ;
ДобавитьКоманду( ТаблицаКоманд, "Внешний: АКТ (Иванов)" , "АКТПечатьВнешняяИван" , "ВызовСерверногоМетода" , Истина , "ПечатьMXL" ) ;
ДобавитьКоманду( ТаблицаКоманд, "Внешний: АКТ (Петров)" , "АКТПечатьВнешняяПетр" , "ВызовСерверногоМетода" , Истина , "ПечатьMXL" ) ;
ПараметрыРегистрации. Вставить( "Команды" , ТаблицаКоманд) ;
Возврат ПараметрыРегистрации;
КонецФункции
#КонецОбласти
#Область Вспомогательное
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "" , Информация = "" , Версия = "1.0" )
Если ТипЗнч( ОбъектыНазначенияФормы) = Тип( "Строка" ) Тогда
ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы. Добавить( ОбъектНазначенияФормы) ;
КонецЕсли ;
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации. Вставить( "Вид" , "ПечатнаяФорма" ) ;
ПараметрыРегистрации. Вставить( "БезопасныйРежим" , Истина ) ;
ПараметрыРегистрации. Вставить( "Назначение" , ОбъектыНазначенияФормы) ;
Если Не ЗначениеЗаполнено( НаименованиеОбработки) Тогда
НаименованиеОбработки = ЭтотОбъект. Метаданные( ) . Представление( ) ;
КонецЕсли ;
ПараметрыРегистрации. Вставить( "Наименование" , НаименованиеОбработки) ;
Если Не ЗначениеЗаполнено( Информация) Тогда
Информация = ЭтотОбъект. Метаданные( ) . Комментарий;
КонецЕсли ;
ПараметрыРегистрации. Вставить( "Информация" , Информация) ;
ПараметрыРегистрации. Вставить( "Версия" , Версия) ;
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды. Колонки. Добавить( "Представление" , Новый ОписаниеТипов( "Строка" ) ) ;
Команды. Колонки. Добавить( "Идентификатор" , Новый ОписаниеТипов( "Строка" ) ) ;
Команды. Колонки. Добавить( "Использование" , Новый ОписаниеТипов( "Строка" ) ) ;
Команды. Колонки. Добавить( "ПоказыватьОповещение" , Новый ОписаниеТипов( "Булево" ) ) ;
Команды. Колонки. Добавить( "Модификатор" , Новый ОписаниеТипов( "Строка" ) ) ;
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода" , ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL" )
НоваяКоманда = ТаблицаКоманд. Добавить( ) ;
НоваяКоманда. Представление = Представление;
НоваяКоманда. Идентификатор = Идентификатор;
НоваяКоманда. Использование = Использование;
НоваяКоманда. ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда. Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти
3. Добавляем макет вывода печатной формы:
4. Сохраняем и добавляем в конфигурацию:
Подключается через Администрирование - Печатные формы, отчеты и обработки:
Создаете новую обработку, записывайте и при открытии документа Реализация, нажав на Печать - появляются доступные печатные формы с разными подписывающими.
Скачать Шаблон внешней печатной формы для управляемого приложения
Категория:
Внешние печатные формы, отчеты и обработк�… Как заполнить документ на основании выполним заполнение на сервере? Часто при разработке конфигураций необходимо реализовать заполнение документов на основании уже введенных, вот код для управляемого приложения:
Код 1C v 8.3 &НаСервере
Процедура ЗаполнитьТоварыПоОснованию(ДокументОснование)
Запрос = Новый Запрос( ) ;
Запрос. УстановитьПараметр( "Ссылка" , ДокументОснование) ;
Запрос. Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Ссылка,
| РеализацияТоваровУслугТовары.НомерСтроки,
| РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
| РеализацияТоваровУслугТовары.Количество,
| РеализацияТоваровУслугТовары.КоличествоМест,
| РеализацияТоваровУслугТовары.Коэффициент,
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.СерияНоменклатуры,
| РеализацияТоваровУслугТовары.Склад,
| РеализацияТоваровУслугТовары.СтавкаНДС,
| РеализацияТоваровУслугТовары.Сумма,
| РеализацияТоваровУслугТовары.СуммаНДС,
| РеализацияТоваровУслугТовары.СчетУчетаБУ,
| РеализацияТоваровУслугТовары.Цена,
| РеализацияТоваровУслугТовары.ЗаказПокупателя
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &Ссылка" ;
Объект. Товары. Загрузить( Запрос. Выполнить( ) . Выгрузить( ) ) ;
КонецПроцедуры
Категория:
Управляемое приложение, Тонкий клиент Как запросом получить последний по дате документ? Сортируем документы по убыванию даты и используем конструкцию «ВЫБРАТЬ ПЕРВЫЕ 1»:
Код 1C v 8.х Запрос = Новый Запрос;
Запрос. Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Контрагент = &Контрагент
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ" ;
Запрос. УстановитьПараметр( "Контрагент" , Контрагент) ;
РезультатЗапроса = Запрос. Выполнить( ) ;
Выборка = РезультатЗапроса. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Возврат Выборка. Ссылка;
КонецЦикла ;
В результате запрос вернёт одну строку, с данными последнего документа по одному контрагенту.
А как сделать запрос, который вернёт последние документы по всем контрагентам, а не по одному конкретному?
Используем функцию МАКСИМУМ в запросе для решения данной задачи.
Код 1C v 8.х Запрос = Новый Запрос;
Запрос. Текст = "
|ВЫБРАТЬ
| ПоследниеДокументыКонтрагентов.Ссылка,
| ПоследниеДокументыКонтрагентов.Контрагент
|ИЗ Документ.РеализацияТоваровУслуг КАК ПоследниеДокументыКонтрагентов
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Доки.Контрагент КАК Контрагент,
| МАКСИМУМ(Доки.Дата) КАК ДатаПоследнегоДокумента
| ИЗ Документ.РеализацияТоваровУслуг КАК Доки
|СГРУППИРОВАТЬ ПО Доки.Контрагент)
|КАК ДатыПоследнихДокументовКонтрагентов
|ПО ПоследниеДокументыКонтрагентов.Контрагент =
|ДатыПоследнихДокументовКонтрагентов.Контрагент
|И ПоследниеДокументыКонтрагентов.Дата =
|ДатыПоследнихДокументовКонтрагентов.ДатаПоследнегоДокумента" ;
РезультатЗапроса = Запрос. Выполнить( ) ;
Этот запрос выбирает последние документы по всем контрагентам.
Категория:
Запросы Вывод несколько раз макета ActiveDocument в один документ Word Текст кода для вывода шаблона несколько раз в один документ Ворд.
Случилось, что понадобилось вывести шаблон справки к продукции для каждой строки ТЧ товары документа. Создаем макет печ. формы с типом ActiveDocument и загружаем туда наш шаблон. Далее все стандартно по созданию внешней печ. формы + код ниже
Код 1C v 8.х ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент. ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Справка" ;
АктивныйДокумент = ПолучитьМакет( "Макет" ) ;
КомОбъект = АктивныйДокумент. Получить( ) ;
Попытка
Word = КомОбъект. Application;
Док= Word. Documents( 1 ) ;
Док. GrammarChecked= 0 ;
Док. ShowGrammaticalErrors= 0 ;
Док. Activate( ) ;
Файл = КаталогВременныхФайлов( ) + "файл" + Выборка. Номер + ".doc" ;
Word. S_election. WholeStory( ) ;
Word. S_election. Copy( ) ;
Счетчик = 1 ;
Для каждого Строка Из СсылкаНаОбъект. Товары Цикл
Замена = Док. Content. Find;
НомерДокумента = ОбщегоНазначения. ПолучитьНомерНаПечать( СсылкаНаОбъект) ;
Замена. Execute( "[Номер]" , Ложь , Истина , Ложь , , , Истина , , Ложь , НомерДокумента) ;
Замена = Док. Content. Find;
Замена. Execute( "[Дата]" , Ложь , Истина , Ложь , , , Истина , , Ложь , Формат( Выборка. Дата, "ДЛФ = ДДММГГ" ) ) ;
Замена = Док. Content. Find;
Замена. Execute( "[Наименование]" , Ложь , Истина , Ложь , , , Истина , , Ложь , Строка( Строка. Номенклатура) ) ;
Замена = Док. Content. Find;
Замена. Execute( "[Количество]" , Ложь , Истина , Ложь , , , Истина , , Ложь , Строка( Строка. Количество) ) ;
Замена = Док. Content. Find;
Замена. Execute( "[Декларация]" , Ложь , Истина , Ложь , , , Истина , , Ложь , РегНомерДекларации) ;
Замена = Док. Content. Find;
СведенияОПоставщике = УправлениеКонтактнойИнформацией. СведенияОЮрФизЛице( Выборка. Организация, Выборка. Дата, , ) ;
ФактАдрес = ФормированиеПечатныхФормСервер. ОписаниеОрганизации( СведенияОПоставщике, "ФактическийАдрес" ) ;
Производитель = Выборка. ОрганизацияНаименованиеСокращенное + ", " + Выборка. ФактАдресОрганизации;
Замена. Execute( "[Производитель]" , Ложь , Истина , Ложь , , , Истина , , Ложь , Производитель) ;
Word. S_election. EndKey( 6 ) ;
Если Счетчик < СсылкаНаОбъект. Товары. Количество( ) тогда
Word. S_election. I_nsertBreak( 7 ) ;
Word. S_election. Paste( ) ;
КонецЕсли ;
Счетчик = Счетчик + 1 ;
КонецЦикла ;
Док. SaveAs( Файл) ;
Док. Close( 0 ) ;
ЗапуститьПриложение( """ " + Файл + """ " ) ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
Word. Quit( ) ;
КонецПопытки ;
Автор:
sanja Категория:
Работа с Microsoft Office и OpenOffice Табличное поле ~ Заполнение данными, Ширина, Формат колонок, Подвал поля и Итоги? Код 1C v 8.х Запрос = Новый Запрос( "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
| РеализацияТоваровУслугТовары.Ссылка.Номер,
| РеализацияТоваровУслугТовары.Ссылка.Дата,
| РеализацияТоваровУслугТовары.Ссылка.Контрагент,
| РеализацияТоваровУслугТовары.Ссылка.ТоннажДокумента КАК Тоннаж,
| РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК Сумма,
| 0 КАК ЕстьДопУслуги
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка.Доставка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| КомплектацияНоменклатурыКомплектующие.Ссылка.Ссылка,
| КомплектацияНоменклатурыКомплектующие.Ссылка.Номер,
| КомплектацияНоменклатурыКомплектующие.Ссылка.Дата,
| NULL,
| 0,
| 0,
| 0
|ИЗ
| Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие
|ГДЕ
| КомплектацияНоменклатурыКомплектующие.Доставка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|АВТОУПОРЯДОЧИВАНИЕ" ) ;
Запрос. УстановитьПараметр( "Ссылка" , Ссылка) ;
ТабличноеПолеРеализаций = Запрос. Выполнить( ) . Выгрузить( ) ;
ЭлементыФормы. ТабличноеПолеРеализаций. СоздатьКолонки( ) ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. ЕстьДопУслуги. Видимость = Ложь ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Тоннаж. ОтображатьИтогиВПодвале = Истина ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Сумма. ОтображатьИтогиВПодвале = Истина ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Тоннаж. ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложение. Право;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Сумма. ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложение. Право;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Тоннаж. ТекстПодвала = "" + Формат( ТабличноеПолеРеализаций. Итог( "Тоннаж" ) , "ЧЦ=15; ЧДЦ=3" ) ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Тоннаж. Ширина = 15 ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Тоннаж. Формат = "ЧДЦ=3; ЧГ=3,0" ;
ЭлементыФормы. ТабличноеПолеРеализаций. Колонки. Сумма. Формат = "ЧДЦ=2; ЧГ=3,0" ;
Категория:
Работа с Формой (Диалог) и её элементами Подключение к ИБ через Com, Получение списка документов и их Загрузка Код 1C v 8.х
Перем Подключились;
Перем COMОбъект;
Функция ПолучитьНом(Выборка)
Ном = Справочники. Номенклатура. НайтиПоНаименованию( СокрЛП( Выборка. Номенклатура) ) ;
Если Ном. Пустая( ) Тогда
ВвестиЗначение( Ном, "Выберите номенклатуру " + СокрЛП( Выборка. Номенклатура) , Тип( "СправочникСсылка.Номенклатура" ) ) ;
КонецЕсли ;
Возврат Ном;
КонецФункции
Функция ПодключитьсяКCRM()
Подключились = Истина ;
Попытка
Подкл = Новый COMОбъект( "V82.COMConnector" ) ;
COMОбъект = Подкл. Connect( "Srvr="" Server1"" ;Ref="" TradeUT"" ;Usr="" ObmenBot"" ;Pwd="" 12345"" " ) ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
Подключились = Ложь ;
КонецПопытки ;
Возврат Подключились;
КонецФункции
Процедура Реализации_Анализ(Элемент)
Если не Подключились Тогда
Если не ПодключитьсяКCRM( ) Тогда
Возврат ;
КонецЕсли ;
КонецЕсли ;
Запрос = COMОбъект. NewObject( "Запрос" ) ;
Запрос. Текст = ПолучитьМакет( "ЗапросПродажи" ) . ПолучитьТекст( ) ;
Запрос. УстановитьПараметр( "Дата1" , НачалоДня( ДатаНач) ) ;
Запрос. УстановитьПараметр( "Дата2" , КонецДня( ДатаКон) ) ;
глРезультатЗапросаПродажи = Запрос. Выполнить( ) ;
Выборка = глРезультатЗапросаПродажи. Выбрать( COMОбъект. ОбходРезультатаЗапроса. ПоГруппировкам) ;
ДокРеал = Документы. РеализацияТоваровУслуг;
СпрКонтр = Справочники. Контрагенты;
ТаблицаДокументов. Очистить( ) ;
Пока Выборка. Следующий( ) Цикл
ОбработкаПрерыванияПользователя( ) ;
Стр = ТаблицаДокументов. Добавить( ) ;
ЗаполнитьЗначенияСвойств( Стр, Выборка) ;
Стр. Документ = ДокРеал. НайтиПоНомеру( Стр. Номер, Стр. Дата) ;
Стр. ТекстКонтрагент = Выборка. КонтрагентНаименование + ", ИНН " + Выборка. ИННКонтрагента;
Если не ПустаяСтрока( Выборка. ИННКонтрагента) Тогда
ВыборкаКонтр = СпрКонтр. Выбрать( , , Новый Структура( "ИНН" , Выборка. ИННКонтрагента) ) ;
Пока ВыборкаКонтр. Следующий( ) Цикл
Если не ЗначениеЗаполнено( Стр. Контрагент) или ВыборкаКонтр. КПП = Выборка. КППКонтрагента Тогда
Стр. Контрагент = ВыборкаКонтр. Ссылка;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
ЭлементыФормы. кнЗагрузитьШаг1 . Доступность = Истина ;
ЭлементыФормы. ИндикаторРеал. МаксимальноеЗначение = ТаблицаДокументов. Количество( ) ;
КонецПроцедуры
Процедура Реализации_Загрузить(Элемент)
ЭлементыФормы. ИндикаторРеал. МаксимальноеЗначение = ТаблицаДокументов. Количество( ) ;
ЗначениеИндикатораРеал = 0 ;
ДокРеал = Документы. РеализацияТоваровУслуг;
ВыборкаДок = глРезультатЗапросаПродажи. Выбрать( COMОбъект. ОбходРезультатаЗапроса. ПоГруппировкам) ;
мСписокВидовДоговоров = Новый СписокЗначений;
мСписокВидовДоговоров. Добавить( Перечисления. ВидыДоговоровКонтрагентов. СПокупателем) ;
СпособЗаполненияЦен = Перечисления. СпособыЗаполненияЦен. ПоЦенамНоменклатуры;
Пока ВыборкаДок. Следующий( ) Цикл
ЗначениеИндикатораРеал = ЗначениеИндикатораРеал + 1 ;
СтрокаТаб = ТаблицаДокументов. Найти( ВыборкаДок. Номер, "Номер" ) ;
Если СтрокаТаб < > Неопределено Тогда
Если ЗначениеЗаполнено( СтрокаТаб. Документ) Тогда
Док = СтрокаТаб. Документ. ПолучитьОбъект( ) ;
Док. Товары. Очистить( ) ;
Док. Услуги. Очистить( ) ;
Иначе
Док = ДокРеал. СоздатьДокумент( ) ;
КонецЕсли ;
Док. Дата = ВыборкаДок. Дата;
Док. Номер = ВыборкаДок. Номер;
Док. Контрагент = СтрокаТаб. Контрагент;
ЗаполнениеДокументов. ЗаполнитьШапкуДокумента( Док, глЗначениеПеременной( "глТекущийПользователь" ) , Док. мВалютаРегламентированногоУчета, "Продажа" ) ;
ЗаполнениеДокументов. ПриИзмененииЗначенияКонтрагента( Док, мСписокВидовДоговоров) ;
ЗаполнениеДокументов. ПриИзмененииЗначенияДоговора( Док, Док. ВалютаДокумента, Док. мВалютаРегламентированногоУчета, СпособЗаполненияЦен, Ценообразование. ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования( Док) , "Продажа" , "Товары" , Неопределено ) ;
Док. ЗаполнитьСчетаУчетаРасчетов( ) ;
Док. УчитыватьНДС = Ложь ;
ВыборкаНом = ВыборкаДок. Выбрать( COMОбъект. ОбходРезультатаЗапроса. ПоГруппировкам) ;
Пока ВыборкаНом. Следующий( ) Цикл
ОбработкаПрерыванияПользователя( ) ;
Ном = ПолучитьНом( ВыборкаНом) ;
Если ВыборкаНом. Идентификатор = 1 Тогда
СтрокаТЧ = Док. Товары. Добавить( ) ;
СтрокаТЧ. Номенклатура = Ном;
Док. ЗаполнитьСчетаУчетаВСтрокеТабЧасти( СтрокаТЧ, "Товары" , Истина ) ;
Иначе
СтрокаТЧ = Док. Услуги. Добавить( ) ;
СтрокаТЧ. Номенклатура = Ном;
Док. ЗаполнитьСчетаУчетаВСтрокеТабЧастиУслуги( СтрокаТЧ, ИСТИНА ) ;
ОбработкаТабличныхЧастей. ЗаполнитьСодержаниеТабЧасти( СтрокаТЧ, Док) ;
КонецЕсли ;
ОбработкаТабличныхЧастей. ЗаполнитьСтавкуНДСТабЧасти( СтрокаТЧ, Док) ;
ОбработкаТабличныхЧастей. ЗаполнитьЕдиницуЦенуПродажиТабЧасти( СтрокаТЧ, Док, Док. мВалютаРегламентированногоУчета) ;
СтрокаТЧ. Количество = ВыборкаНом. Количество;
СтрокаТЧ. Сумма = ВыборкаНом. Сумма;
СтрокаТЧ. Цена = СтрокаТЧ. Сумма / ? ( ВыборкаНом. Количество = 0 , 1 , ВыборкаНом. Количество) ;
КонецЦикла ;
Если не ВыборкаДок. ДоставкаОтдельно и ВыборкаДок. СтоимостьДоставкиПлан < > 0 Тогда
СтрокаТЧ = Док. Товары. Добавить( ) ;
СтрокаТЧ. Номенклатура = Док. Товары[0 ]. Номенклатура;
Док. ЗаполнитьСчетаУчетаВСтрокеТабЧасти( СтрокаТЧ, "Товары" , Истина ) ;
ОбработкаТабличныхЧастей. ЗаполнитьСтавкуНДСТабЧасти( СтрокаТЧ, Док) ;
ОбработкаТабличныхЧастей. ЗаполнитьЕдиницуЦенуПродажиТабЧасти( СтрокаТЧ, Док, Док. мВалютаРегламентированногоУчета) ;
СтрокаТЧ. Сумма = - ВыборкаДок. СтоимостьДоставкиПлан;
СтрокаТЧ = Док. Услуги. Добавить( ) ;
СтрокаТЧ. Номенклатура = Справочники. Номенклатура. ТранспортныеУслуги;
Док. ЗаполнитьСчетаУчетаВСтрокеТабЧастиУслуги( СтрокаТЧ, ИСТИНА ) ;
ОбработкаТабличныхЧастей. ЗаполнитьСодержаниеТабЧасти( СтрокаТЧ, Док) ;
ОбработкаТабличныхЧастей. ЗаполнитьСтавкуНДСТабЧасти( СтрокаТЧ, Док) ;
ОбработкаТабличныхЧастей. ЗаполнитьЕдиницуЦенуПродажиТабЧасти( СтрокаТЧ, Док, Док. мВалютаРегламентированногоУчета) ;
СтрокаТЧ. Количество = 1 ;
СтрокаТЧ. Цена = ВыборкаДок. СтоимостьДоставкиПлан;
СтрокаТЧ. Сумма = ВыборкаДок. СтоимостьДоставкиПлан;
КонецЕсли ;
Ош = Ложь ;
Попытка
Док. Записать( ? ( Проводить, РежимЗаписиДокумента. Проведение, РежимЗаписиДокумента. Запись) ) ;
Ош = Истина ;
Исключение
КонецПопытки ;
Если Ош и Проводить Тогда
Док. Записать( РежимЗаписиДокумента. Запись) ;
КонецЕсли ;
СтрокаТаб. Документ = Док. Ссылка;
КонецЕсли ;
КонецЦикла ;
КонецПроцедуры
Подключились = Ложь ;
Категория:
COM-объекты, WMI, WSH Программное использование универсальной обработки Выгрузка Загрузка Данных XML Для работы, необходимо взять
обработку "ВыгрузкаЗагрузкаДанныхXML" , которая находится в шаблоне "Конвертация данных".
Пример обработки(автор Misha Macklaud):
Скачивать файлы может только зарегистрированный пользователь!
а это ее код:
Код 1C v 8.х Процедура КнопкаВыполнитьНажатие(Кнопка)
ОбработкаОбмен = Обработки. ВыгрузкаЗагрузкаДанныхXML. Создать( ) ;
ОбработкаОбмен. Инициализация( ) ;
ОбработкаОбмен. ОбработанныхКонстант = 0 ;
ОбработкаОбмен. ОбработанныхНаборовЗаписей = 0 ;
СписокОбъектовВыгрузки = Новый СписокЗначений;
СписокОбъектовВыгрузки. Добавить( Метаданные. Документы. РеализацияТоваровУслуг) ;
СписокОбъектовВыгрузки. Добавить( Метаданные. Документы. ПоступлениеТоваровУслуг) ;
СписокОбъектовВыгрузки. Добавить( Метаданные. Документы. ТребованиеНакладная) ;
Для й= 0 По СписокОбъектовВыгрузки. Количество( ) - 1 Цикл
СтрокаВыгрузки = ОбработкаОбмен. ДеревоМетаданных. Строки. Найти( СписокОбъектовВыгрузки[й]. Значение, "ОбъектМД" , Истина ) ;
СтрокаВыгрузки. Выгружать= 1 ;
ОбработкаОбмен. ОбработкаИзмененияСостоянияВыгружать( СтрокаВыгрузки) ;
Построитель = ОбработкаОбмен. ПодготовитьПостроительДляВыгрузки( СтрокаВыгрузки) ;
СписокСсылокВыгрузки = Новый СписокЗначений;
Для Каждого СтрокаТабДокументы Из ТабДокументы Цикл
Если ( СтрокаТабДокументы. Документ. Метаданные( ) = СписокОбъектовВыгрузки[й]. Значение) И ( СтрокаТабДокументы. ФлагВыгружать) Тогда
СписокСсылокВыгрузки. Добавить( СтрокаТабДокументы. Документ. Ссылка) ;
КонецЕсли ;
КонецЦикла ;
Отбор = Построитель. Отбор;
Отбор. Добавить( "Ссылка" , "Ссылка" ) ;
Отбор[0 ]. Использование = Истина ;
Отбор[0 ]. ВидСравнения = ВидСравнения. ВСписке;
Отбор[0 ]. Значение = СписокСсылокВыгрузки;
СтрокаВыгрузки. НастройкиПостроителя = Построитель. ПолучитьНастройки( ) ;
СтрокаВыгрузки. ИспользоватьОтбор = Истина ;
КонецЦикла ;
СписокОбъектовВыгрузки. Очистить( ) ;
Для й= 0 По СписокОбъектовВыгрузки. Количество( ) - 1 Цикл
СтрокаВыгрузки = ОбработкаОбмен. ДеревоМетаданных. Строки. Найти( СписокОбъектовВыгрузки[й]. Значение, "ОбъектМД" , Истина ) ;
СтрокаВыгрузки. ВыгружатьПриНеобходимости = 0 ;
ОбработкаОбмен. ОбработкаИзмененияСостоянияВыгружать( СтрокаВыгрузки) ;
КонецЦикла ;
СписокОбъектовВыгрузки. Очистить( ) ;
СписокОбъектовВыгрузки. Добавить( Метаданные. Справочники. Номенклатура) ;
Для й= 0 По СписокОбъектовВыгрузки. Количество( ) - 1 Цикл
СтрокаВыгрузки = ОбработкаОбмен. ДеревоМетаданных. Строки. Найти( СписокОбъектовВыгрузки[й]. Значение, "ОбъектМД" , Истина ) ;
СтрокаВыгрузки. Выгружать= 1 ;
ОбработкаОбмен. ОбработкаИзмененияСостоянияВыгружать( СтрокаВыгрузки) ;
КонецЦикла ;
ИмяФайлаЗагрузки = "D:\А-Б.xml" ;
ОбработкаОбмен. ВыполнитьЗагрузку( ИмяФайлаЗагрузки) ;
ИмяФайлаВыгрузки = "D:\Б-А.xml" ;
ОбработкаОбмен. ВыполнитьВыгрузку( ИмяФайлаВыгрузки) ;
КонецПроцедуры
Процедура ВыбПериодНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода. РедактироватьКакИнтервал = Истина ;
НастройкаПериода. РедактироватьКакПериод = Истина ;
НастройкаПериода. ВариантНастройки = ВариантНастройкиПериода. Период;
НастройкаПериода. УстановитьПериод( НачПериода, ? ( КонПериода= '0001 - 01 - 01 ', КонПериода, КонецДня( КонПериода) ) ) ;
Если НастройкаПериода. Редактировать( ) Тогда
НачПериода = НастройкаПериода. ПолучитьДатуНачала( ) ;
КонПериода = НастройкаПериода. ПолучитьДатуОкончания( ) ;
КонецЕсли ;
КонецПроцедуры
Процедура ПриОткрытии()
НачПериода = ТекущаяДата( ) ;
КонПериода = ТекущаяДата( ) ;
КонецПроцедуры
Процедура ЗаполнитьТабЧастьОбъектом(Запрос,ОбъектЗапроса,ТЗ)
Запрос. Текст = "ВЫБРАТЬ
| ОбъектЗапроса.Ссылка
|ИЗ
| Документ." + ОбъектЗапроса+ " КАК ОбъектЗапроса
|ГДЕ
| ОбъектЗапроса.ПометкаУдаления = ЛОЖЬ И
| ОбъектЗапроса.Дата МЕЖДУ &ДатаНач И &ДатаКон" ;
Запрос. УстановитьПараметр( "ДатаНач" , НачалоДня( НачПериода) ) ;
Запрос. УстановитьПараметр( "ДатаКон" , КонецДня( КонПериода) ) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
НоваяСтрока = ТЗ. Добавить( ) ;
НоваяСтрока. Дата = Выборка. Ссылка. Дата;
НоваяСтрока. Документ = Выборка. Ссылка;
КонецЦикла ;
КонецПроцедуры
Процедура ЗаполнитьНажатие(Элемент)
ТабДокументы. Очистить( ) ;
ТЗ = Новый ТаблицаЗначений;
ТЗ. Колонки. Добавить( "Дата" ) ;
ТЗ. Колонки. Добавить( "Документ" ) ;
Запрос = Новый Запрос;
Если флРеализация Тогда
ОбъектЗапроса = "РеализацияТоваровУслуг" ;
ЗаполнитьТабЧастьОбъектом( Запрос, ОбъектЗапроса, ТЗ) ;
КонецЕсли ;
Если флПоступление Тогда
ОбъектЗапроса = "ПоступлениеТоваровУслуг" ;
ЗаполнитьТабЧастьОбъектом( Запрос, ОбъектЗапроса, ТЗ) ;
КонецЕсли ;
Если флТребованиеНакладная Тогда
ОбъектЗапроса = "ТребованиеНакладная" ;
ЗаполнитьТабЧастьОбъектом( Запрос, ОбъектЗапроса, ТЗ) ;
КонецЕсли ;
ТЗ. Сортировать( "Дата" ) ;
Для Каждого Стр Из ТЗ Цикл
НоваяСтрока = ТабДокументы. Добавить( ) ;
НоваяСтрока. Документ = Стр. Документ;
НоваяСтрока. ФлагВыгружать = Истина ;
КонецЦикла ;
КонецПроцедуры
Категория:
Конвертация данных, Обмен, Перенос Условия сравнения и проверки в Запросах. Отбор не заполненного значения Как задать отбор по Типу документа?
Как указать условие для отбора не определенного значения?
Как в языке запросов 1С отобрать не заполненное значение?
Какое условие указать в запросе после ключевого слова «ГДЕ», когда нужно сделать отбор по не заполненным полям?
Код 1C v 8.х Запрос. Текст =
"ВЫБРАТЬ
| усЕдиницыХранения.Ссылка
|ИЗ
| Справочник.усЕдиницыХранения КАК усЕдиницыХранения"
|ГДЕ
| усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь
|ГДЕ
| НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны
|ГДЕ
| усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка)
|ГДЕ
| НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка)
|ГДЕ
| (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка)
| ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка)
| ИЛИ ...(и т.д. - последовательно перечисляем условия для всех возможных типов этого составного поля))
|ГДЕ
| усЕдиницыХранения.Наименование > "" ""
|ГДЕ
| ВЫРАЗИТЬ(РегистрСведенийВыполняемыеЗадания.Задание КАК Документ.Отбор) ССЫЛКА Документ.Отбор
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг
| ТОГДА "" ПоступлениеТоваровУслуг""
| КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА "" РеализацияТоваровУслуг""
| ИНАЧЕ "" ""
| КОНЕЦ КАК ВидДокумента
|ГДЕ
| СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО
|ГДЕ
| РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|ГДЕ ЛОЖЬ
Если НЕ Запрос. Выполнить( ) . Пустой( ) Тогда
|ГДЕ
| тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)
источник Категория:
Запросы Как в запросе задать условие по типы значения? Код 1C v 8.х
Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Покупатель
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &Период,
| Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НДСНачисленныйПоОтгрузке),
| ,
| Организация = &Организация
| И Субконто2 ССЫЛКА Документ.РеализацияТоваровУслуг
| И Субконто1 В (&СписокПокупателей)
| И ВЫРАЗИТЬ(Субконто2 КАК Документ.РеализацияТоваровУслуг).ВидОперации =
| &ОперацияОтгрузка) КАК ХозрасчетныйОстатки" ;
Категория:
Запросы Как сбросить счётчик нумерации документов или справочников Используйте:
Глобальный контекст:
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Синтаксис:
Код 1C v 8.х ОбновитьНумерациюОбъектов( < Метаданные> )
Параметры:
<Метаданные> (необязательный, НО Если значение параметра не указано, то обновление будет выполнено для всех типов объектов)
Тип:
Массив; Объекты метаданных. Объект метаданного или массив объектов метаданных, для объектов которого будет выполнено обновление. Если значение параметра не указано, то обновление будет выполнено для всех типов объектов.
Описание:
Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но не записанные номера, становятся невалидными, т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы.
Доступность:
Сервер, толстый клиент, внешнее соединение
Пример:
Код 1C v 8.х
ОбновитьНумерациюОбъектов( Метаданные. Документы. РеализацияТоваровУслуг)
ОбновитьНумерациюОбъектов( Метаданные. Документы. ОтчетПроизводстваЗаСмену) ;
ОбновитьНумерациюОбъектов( Метаданные. Документы. ТребованиеНакладная) ;
ОбновитьНумерациюОбъектов( Метаданные. Документы. ПриходныйКассовыйОрдер) ;
ОбновитьНумерациюОбъектов( Метаданные. Документы. РасходныйКассовыйОрдер) ;
ОбновитьНумерациюОбъектов( Метаданные. Справочники. Номенклатура) ;
ОбновитьНумерациюОбъектов( Метаданные. Справочники. Абонементы) ;
По этой теме:
Сбилась автонумерация у документа или справочника с текстовым кодом, что делать? Категория:
1С Общие вопросы - Обычные формы Как в запросе отобрать значения по Типу? Для того, чтобы определить отобрать по типу значения в запросе нужно использовать логический оператор "ССЫЛКА". Примером может служить вот такой фрагмент запроса из типовой конфигурации 1С:
Код 1C v 8.х Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Покупатель
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &Период,
| Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НДСНачисленныйПоОтгрузке),
| ,
| Организация = &Организация
| И Субконто2 ССЫЛКА Документ.РеализацияТоваровУслуг
| И Субконто1 В (&СписокПокупателей)
| И ВЫРАЗИТЬ(Субконто2 КАК Документ.РеализацияТоваровУслуг).ВидОперации =
| &ОперацияОтгрузка) КАК ХозрасчетныйОстатки" ;
В данном примере используется проверка, что субконто 2 содержит тип значения ссылки на документ Реализации товаров и услуг, чтобы потом уверенно использовать реквизит вид операции.
Категория:
Запросы Табличное поле ~ Как установить текущую строку в табличном поле? Схема программной установки нужной нам строки активной.
Для начала хочу напомнить, что данные табличной части документа(или таблицы значений) и табличное поле – это разные объекты. Для того чтобы сделать какие-то визуальные действия мы работаем с табличным полем. В данном случае, мы будем использовать его свойство "ТекущаяСтрока", как раз оно и отвечает за то, какая строка активна.
Чтобы выделить в табличном поле необходимую нам строку понадобится два шага:
1. Найти нужную нам строку в объекте данных которые отображает табличное поле
Подчеркну что здесь понадобиться именно объект данных. Например, у нас имеется документ РеализацияТоваровУслуг у которого есть табличная часть «Товары» и мы решили сделать активной 2-ю строку на форме документа. Тогда в модуле формы документа мы напишем:
Код 1C v 8.х
НужнаяСтрока = Товары[1 ];
Или мы знаем, что во второй строке в колонке Номенклатура у элемента Код равен «001» тогда мы используем конструкцию:
Код 1C v 8.х
НужнаяСтрока = Товары. Найти( Справочники. Номенклатура. НайтиПоКоду( «001 ») ) ;
2. Установить значением текущей строки найденную строку
Теперь нам нужно присвоить значение переменной НужнаяСтрока свойству табличного поля ТекущаяСтрока:
Код 1C v 8.х
ЭлементыФормы. Товары. Текущаястрока = НужнаяСтрока;
Или
Код 1C v 8.х
ЭлементыФормы. ТабличноеПоле1 . Текущаястрока = НужнаяСтрока;
В итоге строки кода могут выглядеть вот так:
Код 1C v 8.х НужнаяСтрока = Товары. Найти( Справочники. Номенклатура. НайтиПоКоду( «001 ») ) ;
ЭлементыФормы. ТабличноеПоле1 . Текущаястрока = НужнаяСтрока;
Категория:
Работа с Формой (Диалог) и её элементами Печать штрихкода 1. Для того чтобы вставить объект для печати штрихкода в табличный документ выполните последовательно следующие действия:
Меню Таблица - Рисунки - Вставить объект
Если библиотека 1C Bar Code установлена корректно, в списке выбора внешних объектов появится строка "1С.V8.Печать штрих-кодов" (режим выбора как элемент управления):
2. Разместите рисунок объекта в нужной области печатной формы, установить размер колонки и рисунка так, чтобы ширина одного и другого не мешали выводу на печать
3. Далее необходимо внести изменения в код внешней обработки, которую планируется подключить в качестве внешней печатной формы. Первым делом нужно отредактировать текст запроса, добавив туда информацию из регистра сведений "Штрихкоды". Это позволит использовать два нужных нам измерения - сам штрихкод и тип штрихкода.
Код 1C v 8.х Запрос. Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугТовары.НомерСтроки,
| РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК Товар,
| РеализацияТоваровУслугТовары.Количество,
| РеализацияТоваровУслугТовары.ЕдиницаИзмерения КАК ЕдиницаЦены,
| МестаХраненияНоменклатуры.МестоХранения.Наименование КАК Склад,
| Штрихкоды.Штрихкод,
| Штрихкоды.ТипШтрихкода
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК
МестаХраненияНоменклатуры
| ПО РеализацияТоваровУслугТовары.Номенклатура =
МестаХраненияНоменклатуры.Номенклатура
| И РеализацияТоваровУслугТовары.Склад =
МестаХраненияНоменклатуры.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
| ПО РеализацияТоваровУслугТовары.Номенклатура = Штрихкоды.Владелец
| И РеализацияТоваровУслугТовары.ЕдиницаИзмерения.ЕдиницаПоКлассификатору =
| Штрихкоды.ЕдиницаИзмерения.ЕдиницаПоКлассификатору
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &СсылкаНаОбъект
|УПОРЯДОЧИТЬ ПО
| Склад УБЫВ" ;
После внесения изменений в макет и запрос обработки, требуется отредактировать способ заполнения данными областей макета с учетом внесенных изменений. Самое интересное в этом примере кода процедуры - способ передачи данных в объект рисунка печати штрихкода:
Код 1C v 8.х
Выборка = Результат. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
ОбластьМакета = Макет. ПолучитьОбласть( "Строка" ) ;
ОбластьМакета. Параметры. Заполнить( Выборка) ;
Если Выборка. ТипШтрихкода < > NULL И Выборка. Штрихкод < > NULL Тогда
ОбластьМакета. Рисунки. D1. Объект. ТипКода = Выборка. ТипШтрихкода. Код;
ОбластьМакета. Рисунки. D1. Объект. ТекстКода = Выборка. Штрихкод;
иначе
ОбластьМакета. Рисунки. D1. Объект. ТипКода = 0 ;
ОбластьМакета. Рисунки. D1. Объект. ТекстКода = "00000000" ;
КонецЕсли ;
ТабДок. Вывести( ОбластьМакета) ;
КонецЦикла ;
Все, больше ничего не надо, сохраняем и формируем
Категория:
Штрих-код (barcode)