Как удалить движения документа программно? Потребовалось в УТ быстро удалить все движения по банку, дело вроде легкое - отменить проведение всех поступлений и списаний безналичных денежных средств, но не тут то было...
При попытке отмены проведения выполнялись проверки на условия оплаты по заказу и документ ни как не отменял проведения
Ну не может типовым способом, заставим не типовым: Через запрос делаем выбору необходимых нам документов и в обработке результата пишем:
Код 1C v 8.3 Для Каждого СтрокаРезультата Из РезультатТаблица Цикл
ДокОбъект = СтрокаРезультата. Ссылка. ПолучитьОбъект( ) ;
Для Каждого Движение ИЗ ДокОбъект. Движения Цикл
Если Движение. Количество( ) > 0 Тогда
Точка = Найти( Строка( Движение) , "." ) ;
ВидРегистра = Лев( Строка( Движение) , Точка - 13 ) ;
РегистрИмя = СокрП( Сред( Строка( Движение) , Точка + 1 ) ) ;
Если ВидРегистра = "РегистрНакопления" Тогда
НаборЗаписей = РегистрыНакопления[РегистрИмя]. СоздатьНаборЗаписей( ) ;
ИначеЕсли ВидРегистра = "РегистрБухгалтерии" Тогда
НаборЗаписей = РегистрыБухгалтерии[РегистрИмя]. СоздатьНаборЗаписей( ) ;
ИначеЕсли ВидРегистра = "РегистрСведений" Тогда
НаборЗаписей = РегистрыСведений[РегистрИмя]. СоздатьНаборЗаписей( ) ;
ИначеЕсли ВидРегистра = "РегистрРасчета" Тогда
НаборЗаписей = РегистрыРасчета[РегистрИмя]. СоздатьНаборЗаписей( ) ;
КонецЕсли ;
НаборЗаписей. Отбор. Регистратор. Установить( ДокОбъект. Ссылка) ;
Иначе
НаборЗаписей = Движение;
КонецЕсли ;
Попытка
НаборЗаписей. Записать( ) ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
КонецПопытки ;
КонецЦикла ;
ДокОбъект. Проведен = Ложь ;
ДокОбъект. Записать( режимзаписидокумента. запись) ;
КонецЦикла ;
Готовая функция для использования в своих обработках или общем модуле:
Код 1C v 8.3 Процедура УдалитьДвиженияДокумента(Документ)
ДокОбъект = Документ. ПолучитьОбъект( ) ;
Для Каждого Движение ИЗ ДокОбъект. Движения Цикл
Если Движение. Количество( ) > 0 Тогда
Точка = Найти( Строка( Движение) , "." ) ;
ВидРегистра = Лев( Строка( Движение) , Точка - 13 ) ;
РегистрИмя = СокрП( Сред( Строка( Движение) , Точка + 1 ) ) ;
Если ВидРегистра = "РегистрНакопления" Тогда
НаборЗаписей = РегистрыНакопления[РегистрИмя]. СоздатьНаборЗаписей( ) ;
ИначеЕсли ВидРегистра = "РегистрБухгалтерии" Тогда
НаборЗаписей = РегистрыБухгалтерии[РегистрИмя]. СоздатьНаборЗаписей( ) ;
ИначеЕсли ВидРегистра = "РегистрСведений" Тогда
НаборЗаписей = РегистрыСведений[РегистрИмя]. СоздатьНаборЗаписей( ) ;
ИначеЕсли ВидРегистра = "РегистрРасчета" Тогда
НаборЗаписей = РегистрыРасчета[РегистрИмя]. СоздатьНаборЗаписей( ) ;
КонецЕсли ;
НаборЗаписей. Отбор. Регистратор. Установить( ДокОбъект. Ссылка) ;
Иначе
НаборЗаписей = Движение;
КонецЕсли ;
Попытка
НаборЗаписей. Записать( ) ;
Исключение
Сообщить( ОписаниеОшибки( ) ) ;
КонецПопытки ;
КонецЦикла ;
КонецПроцедуры
Категория:
Документы Функция расчет среднемесячного количества часов Код 1C v 8.3
&НаСервере
Функция СреднемесячноеКоличествоЧасов(Год)
Запрос = Новый Запрос;
Запрос. УстановитьПараметр( "Год" , Год) ;
Запрос. УстановитьПараметр( "РабочийДень" , Перечисления. ВидыДнейПроизводственногоКалендаря. Рабочий) ;
Запрос. УстановитьПараметр( "ПредпраздничныйДень" , Перечисления. ВидыДнейПроизводственногоКалендаря. Предпраздничный) ;
Запрос. Текст =
"ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня =РабочийДень
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК ЧислоРабочихДней,
| СУММА(ВЫБОР
| КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня =ПредпраздничныйДень
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК ЧислоПредпраздничныхДней
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.Год =Год" ;
ВыборкаКалендаря = Запрос. Выполнить( ) . Выбрать( ) ;
Если ВыборкаКалендаря. Следующий( ) тогда
ЧислоРабочихДнейВГоду = ? ( ВыборкаКалендаря. ЧислоРабочихДней = NULL , 0 , ВыборкаКалендаря. ЧислоРабочихДней) ;
ЧислоПредпраздничныхДнейВГоду = ? ( ВыборкаКалендаря. ЧислоПредпраздничныхДней= NULL , 0 , ВыборкаКалендаря. ЧислоПредпраздничныхДней) ;
Иначе
ЧислоРабочихДнейВГоду = 0 ;
ЧислоПредпраздничныхДнейВГоду = 0 ;
КонецЕсли ;
СреднеМесячное = Окр( ( ЧислоРабочихДнейВГоду* 8 + ЧислоПредпраздничныхДнейВГоду* 7 ) / 12 , 2 ) ;
Возврат СреднеМесячное;
КонецФункции
Категория:
1С Зарплата и Управление Персоналом 3.0 Запрос с ответом простое решения как получить значения с запросом.
Код 1C v 8.х
Функция ШтрихКодВыбрать (Наименование) ;
Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| Штрихкоды.Штрихкод
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Владелец.Наименование =Наименование" ;
Запрос. УстановитьПараметр( "Наименование" , Наименование) ;
Результат = Запрос. Выполнить( ) . Выбрать( ) ;
Если Результат. Следующий( ) Тогда
ШТ = Результат. Штрихкод;
КонецЕсли ;
Возврат ШТ;
КонецФункции
Категория:
Запросы Как в УТ 11.3, в справочник номенклатуры добавить остатки на складах и актуальные цены Попросил клиент добавить в справочник номенклатуры остатки и цены на текущий момент. Нужно!? Делаем:
1. Открываем форму списка номенклатуры и в свойства СписокНоменклатуры - Настройка списка
Корректируем запрос добавляя выборку по остаткам склада, новый вариант:
Код 1C v 8.3 ВЫБРАТЬ
СпрНоменклатура. Ссылка КАК Ссылка,
СпрНоменклатура. Код КАК Код,
СпрНоменклатура. Наименование КАК Наименование,
СпрНоменклатура. Артикул КАК Артикул,
СпрНоменклатура. ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура. ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура. СтавкаНДС КАК СтавкаНДС,
СпрНоменклатура. Родитель,
ВЫБОР
КОГДА СпрНоменклатура. ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура. ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура. ИспользованиеХарактеристик = ЗНАЧЕНИЕ( Перечисление. ВариантыИспользованияХарактеристикНоменклатуры. НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура. ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура. ИспользованиеХарактеристик = ЗНАЧЕНИЕ( Перечисление. ВариантыИспользованияХарактеристикНоменклатуры. НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
ТоварыНаСкладахОстатки1 . ВНаличииОстаток КАК Остаток_Про,
ТоварыНаСкладахОстатки2 . ВНаличииОстаток КАК Остаток_Лемм
ИЗ
Справочник. Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления. ТоварыНаСкладах. Остатки( ,
Склад = Склад1
) КАК ТоварыНаСкладахОстатки1
ПО ( ТоварыНаСкладахОстатки1 . Номенклатура = СпрНоменклатура. Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления. ТоварыНаСкладах. Остатки( ,
Склад = Склад2
) КАК ТоварыНаСкладахОстатки2
ПО ( ТоварыНаСкладахОстатки2 . Номенклатура = СпрНоменклатура. Ссылка)
ГДЕ
НЕ СпрНоменклатура. ЭтоГруппа
{ГДЕ
( СпрНоменклатура. Ссылка В
( ВЫБРАТЬ
Сегменты. Номенклатура
ИЗ
РегистрСведений. НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты. Сегмент = СегментНоменклатуры) ) }
2. Устанавливаем параметры в Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Код 1C v 8.3 СписокНоменклатура. Параметры. УстановитьЗначениеПараметра( "Склад1" , Справочники. Склады. НайтиПоНаименованию( "PRO" ) ) ;
СписокНоменклатура. Параметры. УстановитьЗначениеПараметра( "Склад2" , Справочники. Склады. НайтиПоНаименованию( "ЛЕММ" ) ) ;
Цены. Параметры. УстановитьЗначениеПараметра( "КонПериода" , ТекущаяДата( ) ) ;
Добавляем Динамический список Цены:
В свойствах произвольный запрос:
Код 1C v 8.3 ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЦеныНоменклатурыСрезПоследних. Номенклатура,
ЦеныНоменклатурыСрезПоследних. ВидЦены,
ЦеныНоменклатурыСрезПоследних. Характеристика,
ЦеныНоменклатурыСрезПоследних. Цена
ИЗ
РегистрСведений. ЦеныНоменклатуры. СрезПоследних( &КонПериода, ) КАК ЦеныНоменклатурыСрезПоследних
И для списка номенклатуры пропишем обновление цен при активизации строки
Код 1C v 8.3
Цены. Отбор. Элементы. Очистить( ) ;
НовыйЭлементОтбора = Цены. Отбор. Элементы. Добавить( Тип( "ЭлементОтбораКомпоновкиДанных" ) ) ;
ПолеОтбора = Новый ПолеКомпоновкиДанных( "Номенклатура" ) ;
НовыйЭлементОтбора. ЛевоеЗначение = ПолеОтбора;
НовыйЭлементОтбора. Использование = Истина ;
НовыйЭлементОтбора. ВидСравнения = ВидСравненияКомпоновкиДанных. Равно;
НовыйЭлементОтбора. ПравоеЗначение = ? ( Элемент. ТекущиеДанные < > Неопределено , Элемент. ТекущиеДанные. Ссылка, ВернутьЗначениеНоменклатура( ) ) ;
В результате:
Клиент доволен, а это самое главное
Если Вам нужна аналогичная настройка, обращайтесь, контакты тут
Категория:
1С Управление торговлей 11 Вывод результата запроса на форму УП в таблицу значений (аналог СоздатьКолонки() для УП) при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки():
Код 1C v 8.х Процедура ПоискНажатие(Элемент)
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ДокументоОборот.Этап,
| ДокументоОборот.Отдел,
| ДокументоОборот.ФИО,
| ДокументоОборот.ДатаВремя КАК Дата_Время,
| ДокументоОборот.Документы,
| ДокументоОборот.Примечание,
| ДокументоОборот.Доставка
|ИЗ
| РегистрСведений.ДокументоОборот КАК ДокументоОборот
|ГДЕ
| ДокументоОборот.Документы ПОДОБНОДокументы
| И ДокументоОборот.Доставка.Дата МЕЖДУДатаН ИДатаК
|
|УПОРЯДОЧИТЬ ПО
| ДокументоОборот.ДатаВремя" ;
Запрос. УстановитьПараметр( "Документы" , "%" + СокрЛП( Строка( СтрокаПоиска) ) + "%" ) ;
Запрос. УстановитьПараметр( "ДатаК" , КонПериода) ;
Запрос. УстановитьПараметр( "ДатаН" , НачПериода) ;
Рез= Запрос. Выполнить( ) ;
НайденДок = рез. Выгрузить( ) ;
ЭлементыФормы. НайденДок. СоздатьКолонки( ) ;
В управляемом приложении метод СоздатьКолоки() не доступен, ниже представлена процедура, которая отображает на управляемой форме содержимое таблицы значений переданное ей в качестве параметра:
Пример формы:
Код вывода результата запроса на управляемую форму :
Код 1C v 8.2 УП &НаСервере
Процедура СоздатьТаблицуФормы(Знач ИмяПоляТаблицыФормы, Знач ИмяРеквизитаДанныеФормыКоллекция, Знач ТаблицаЗначений)
Если Элементы. Найти( ИмяПоляТаблицыФормы) = Неопределено Тогда
ЭлементРеквизита = Элементы. Добавить( ИмяПоляТаблицыФормы, Тип( "ТаблицаФормы" ) , ) ;
ЭлементРеквизита. ПутьКДанным = ИмяРеквизитаДанныеФормыКоллекция;
КонецЕсли ;
УдаляемыеРеквизиты = Новый Массив;
РеквизитыДляУдаления = ПолучитьРеквизиты( ИмяРеквизитаДанныеФормыКоллекция) ;
Для Каждого РеквизитУдаления Из РеквизитыДляУдаления Цикл
УдаляемыеРеквизиты. Добавить( ИмяРеквизитаДанныеФормыКоллекция+ "." + РеквизитУдаления. Имя) ;
Элементы. Удалить( Элементы[ИмяПоляТаблицыФормы+ РеквизитУдаления. Имя]) ;
КонецЦикла ;
ДобавляемыеРеквизиты = Новый Массив;
Для каждого Колонка Из ТаблицаЗначений. Колонки Цикл
ДобавляемыеРеквизиты. Добавить( Новый РеквизитФормы( Колонка. Имя, Колонка. ТипЗначения, ИмяРеквизитаДанныеФормыКоллекция, Колонка. Заголовок) ) ;
КонецЦикла ;
ИзменитьРеквизиты( ДобавляемыеРеквизиты, УдаляемыеРеквизиты) ;
Для каждого Колонка Из ТаблицаЗначений. Колонки Цикл
ЭлементРеквизита = Элементы. Добавить( ИмяПоляТаблицыФормы + Колонка. Имя, Тип( "ПолеФормы" ) , Элементы[ИмяПоляТаблицыФормы]) ;
ЭлементРеквизита. ПутьКДанным = ИмяРеквизитаДанныеФормыКоллекция + "." + Колонка. Имя;
ЭлементРеквизита. Вид = ВидПоляФормы. ПолеВвода;
КонецЦикла ;
ЗначениеВРеквизитФормы( ТаблицаЗначений, ИмяРеквизитаДанныеФормыКоллекция) ;
КонецПроцедуры
&НаСервере
Процедура ВПоискНаСервере()
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугСерии.Серия КАК Серия,
| РеализацияТоваровУслугСерии.Ссылка КАК Реализация,
| РеализацияТоваровУслугСерии.Ссылка.ЗаказКлиента КАК ЗаказКлиента,
| РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
| РеализацияТоваровУслугСерии.Ссылка.Договор КАК Договор
|ИЗ
| Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
|ГДЕ
| РеализацияТоваровУслугСерии.Серия В
| (ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
| ГДЕ
| СерииНоменклатуры.Наименование ПОДОБНОНаименование)
|
|УПОРЯДОЧИТЬ ПО
| Серия
|АВТОУПОРЯДОЧИВАНИЕ" ;
Запрос. УстановитьПараметр( "Наименование" , "%" + НомерФН+ "%" ) ;
РезультатЗапроса = Запрос. Выполнить( ) ;
ТаблицаЗапроса = Запрос. Выполнить( ) . Выгрузить( ) ;
СоздатьТаблицуФормы( "ТЗ" , "ТЗ" , ТаблицаЗапроса) ;
КонецПроцедуры
&НаКлиенте
Процедура ВПоиск(Команда)
ВПоискНаСервере( ) ;
КонецПроцедуры
Категория:
Управляемое приложение, Тонкий клиент Фоновые задания: Пример запуска выполнения процедуры / функции на сервере Как в 1С производится запуск фоновых заданий, каким образом можно получить список заданий при помощи метода "ПолучитьФоновыеЗадания()?
В одном проекте понадобилось запускать выполнение выгрузки на сайт с сервера.
Пользователь на своем клиенте открывает обработку, устанавливает параметры и нажимает выгрузить.
Выгрузка идет не с компьютера клиента, а создается фоновое задание на сервере!
На клиенте в модуле Кнопки Выгрузить:
Код 1C v 8.3 Процедура КоманднаяПанель1ВыгрузитьНаСайт(Кнопка)
ПараметрыФоновогоЗадания = Новый Массив;
ПараметрыФоновогоЗадания. Добавить( Группа) ;
ФоновыеЗадания. Выполнить( "МодульРегламентныхЗаданий.ВыгрузкаПрайсаНАФТП" ,
ПараметрыФоновогоЗадания, Новый УникальныйИдентификатор,
"Выгрузка прайса на сайт" ) ;
ПоказатьОповещениеПользователя( "Выгрузка прайса на сайт" , , "Запущено задание выгрузки прайса на сайт, проверьте данные на сайте через 2-3 минуты..." , БиблиотекаКартинок. Информация32 ) ;
ПараметрыФоновогоЗадания - это переменные функции, они задаются по порядку как определены в вызываемой функции.
На сервере в общем модуле МодульРегламентныхЗаданий:
Код 1C v 8.3 Процедура ВыгрузкаПрайсаНАФТП(Группа) Экспорт
Запрос = Новый Запрос( ) ;
Запрос. Текст =
"ВЫБРАТЬ
| ПрайсЛист1СрезПоследних.НоменклатураПрайса,
| ПрайсЛист1СрезПоследних.Цена
|ИЗ
| РегистрСведений.ПрайсЛист.СрезПоследних(, Поставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) КАК ПрайсЛист1СрезПоследних
|ГДЕ
| &Условие
| И ПрайсЛист1СрезПоследних.НоменклатураПрайса.ИДдляСайта > 0" ;
Если ЗначениеЗаполнено( Группа) Тогда
Запрос. Текст = СтрЗаменить( Запрос. Текст, "&Условие" , "ПрайсЛист1СрезПоследних.НоменклатураПрайса В ИЕРАРХИИ(&НоменклатураПрайса)" )
Иначе
Запрос. Текст = СтрЗаменить( Запрос. Текст, "&Условие" , "ИСТИНА" )
КонецЕсли ;
Запрос. УстановитьПараметр( "НоменклатураПрайса" , Группа) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Текст = Новый ТекстовыйДокумент;
Пока Выборка. Следующий( ) Цикл
НомПрайса = Выборка. НоменклатураПрайса;
ЦенаА = Выборка. Цена;
Цена = Ценообразование. ОкруглитьЦену( ЦенаА * ( 1 + НомПрайса. Наценка20 / 100 ) + НомПрайса. Надбавка20 , НомПрайса. ПорядокОкругления, НомПрайса. ОкруглятьВБольшуюСторону) ;
Если Цена > 0 Тогда
Текст. ДобавитьСтроку( "" + Формат( НомПрайса. ИДдляСайта, "ЧГ=0" ) + ";" + Формат( Цена, "ЧГ=0" ) ) ;
КонецЕсли ;
КонецЦикла ;
ПутьКФайлВыгр = "\\FG-1\1c_data\naSite\vigruz.csv" ;
Текст. Записать( ПутьКФайлВыгр, "windows-1251" ) ;
КаталогНаSFTPСервере = "/sitetest.ru/public_html/p" ;
Попытка
ИмяПользователя = "serveruser" ;
ПарольПользователя = "password" ;
Сервер = "192.253.6.47" ;
Порт = "21" ;
Прокси = Новый ИнтернетПрокси( ) ;
Прокси. Пользователь = ИмяПользователя;
Прокси. Пароль = ПарольПользователя;
FTPСоединение = Новый FTPСоединение( Сервер, , ИмяПользователя, ПарольПользователя, , Ложь ) ;
FTPСоединение. УстановитьТекущийКаталог( КаталогНаSFTPСервере) ;
ТекущийКаталог = FTPСоединение. ТекущийКаталог( ) ;
Исключение
КонецПопытки ;
FTPСоединение. Записать( ПутьКФайлВыгр, "vigruz.csv" ) ;
НТТР = Новый HTTPСоединение( "sitetest.ru" ) ;
ФайлРезультата = ПолучитьИмяВременногоФайла( ) ;
НТТР. Получить( "/p/import_price.php" , ФайлРезультата) ;
КонецПроцедуры
Как Получить фоновые задания?
Напишем в процедуре обработки нажания следующий код:
Код 1C v 8.2 УП &НаКлиенте
Процедура ПолучитьФоновыеЗадания(Команда)
ПолучитьФоновыеЗаданияНаСервере( ) ;
КонецПроцедуры
Текст процедуры на сервере:
Код 1C v 8.2 УП &НаСервере
Процедура ПолучитьФоновыеЗаданияНаСервере()
ПараметрыОтбора = Новый Структура( "Наименование" , "Тестовое задание" ) ;
СписокФоновыхЗаданий = ФоновыеЗадания. ПолучитьФоновыеЗадания( ПараметрыОтбора) ;
Для каждого Задание Из СписокФоновыхЗаданий Цикл
Сообщить( Задание. Наименование) ;
КонецЦикла ;
КонецПроцедуры
В окно сообщений выведутся наименования выполняющихся и выполненных в 1С фоновых заданий с наименованием "Тестовое задание", так как мы сделали отбор именно по этому наименованию.
Категория:
Регламентные задания, Фоновые задания Как выбрать запросом записи регистра сведений и удалить их? В регистре сведений штрих кодов появились ошибочные записи, которые надо было быстро удалить... можно конечно и ручками выбирать и жать Delete, но это не наш метод!
Код 1C v 8.3 Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| Штрихкоды.Штрихкод,
| Штрихкоды.Владелец,
| Штрихкоды.ТипШтрихкода,
| Штрихкоды.ЕдиницаИзмерения,
| Штрихкоды.ХарактеристикаНоменклатуры,
| Штрихкоды.СерияНоменклатуры,
| Штрихкоды.Качество
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.СерияНоменклатуры.ПометкаУдаления" ;
Результат = Запрос. Выполнить( ) ;
РезультатТаблица = Результат. Выгрузить( ) ;
ТекПозиция = 0 ;
Для каждого СтрокаЗапроса из РезультатТаблица Цикл
ОбработкаПрерыванияПользователя( ) ;
ТекПозиция = ТекПозиция + 1 ;
Состояние( "Выполнено " + Окр( ТекПозиция / РезультатТаблица. Количество( ) * 100 ) + "%" ) ;
НаборЗаписей = РегистрыСведений. Штрихкоды. СоздатьНаборЗаписей( ) ;
НаборЗаписей. Отбор. Штрихкод. Установить( СтрокаЗапроса. Штрихкод) ;
НаборЗаписей. Отбор. Владелец. Установить( СтрокаЗапроса. Владелец) ;
НаборЗаписей. Отбор. ТипШтрихкода. Установить( СтрокаЗапроса. ТипШтрихкода) ;
НаборЗаписей. Отбор. ЕдиницаИзмерения. Установить( СтрокаЗапроса. ЕдиницаИзмерения) ;
НаборЗаписей. Отбор. ХарактеристикаНоменклатуры. Установить( СтрокаЗапроса. ХарактеристикаНоменклатуры) ;
НаборЗаписей. Отбор. СерияНоменклатуры. Установить( СтрокаЗапроса. СерияНоменклатуры) ;
НаборЗаписей. Записать( Истина ) ;
КонецЦикла ;
Предупреждение( "Обработка закончена." ) ;
Категория:
Регистры сведений Функции получения всех плановых Начислений и Удержаний сотрудника При доработке ЗУПа потребовалось во фронте расчетчика информативно выводить все плановые начисления и удержания по сотруднику на текущий момент. В результате 2 удобные функции, результат возвращают в виде таблицы значений:
Код 1C v 8.3 Функция ПолучитьСписокПлановыхНачислений(Организация, Сотрудник, ДатаО) Экспорт
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ПлановыеНачисленияСрезПоследних.Период,
| ПлановыеНачисленияСрезПоследних.ВидРасчета,
| ПлановыеНачисленияСрезПоследних.Показатель1,
| ПлановыеНачисленияСрезПоследних.Валюта1,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд1,
| ПлановыеНачисленияСрезПоследних.Показатель2,
| ПлановыеНачисленияСрезПоследних.Валюта2,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд2,
| ПлановыеНачисленияСрезПоследних.Показатель3,
| ПлановыеНачисленияСрезПоследних.Валюта3,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд3,
| ПлановыеНачисленияСрезПоследних.Показатель4,
| ПлановыеНачисленияСрезПоследних.Валюта4,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд4,
| ПлановыеНачисленияСрезПоследних.Показатель5,
| ПлановыеНачисленияСрезПоследних.Валюта5,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд5,
| ПлановыеНачисленияСрезПоследних.Показатель6,
| ПлановыеНачисленияСрезПоследних.Валюта6,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд6,
| ПлановыеНачисленияСрезПоследних.Действие,
| ПлановыеНачисленияСрезПоследних.ПериодЗавершения,
| ПлановыеНачисленияСрезПоследних.ВидРасчетаЗавершения,
| ПлановыеНачисленияСрезПоследних.ДействиеЗавершения,
| ПлановыеНачисленияСрезПоследних.Показатель1Завершения,
| ПлановыеНачисленияСрезПоследних.Показатель2Завершения,
| ПлановыеНачисленияСрезПоследних.Показатель3Завершения,
| ПлановыеНачисленияСрезПоследних.Показатель4Завершения,
| ПлановыеНачисленияСрезПоследних.Показатель5Завершения,
| ПлановыеНачисленияСрезПоследних.Показатель6Завершения,
| ПлановыеНачисленияСрезПоследних.Валюта1Завершения,
| ПлановыеНачисленияСрезПоследних.Валюта2Завершения,
| ПлановыеНачисленияСрезПоследних.Валюта3Завершения,
| ПлановыеНачисленияСрезПоследних.Валюта4Завершения,
| ПлановыеНачисленияСрезПоследних.Валюта5Завершения,
| ПлановыеНачисленияСрезПоследних.Валюта6Завершения,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд1Завершения,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд2Завершения,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд3Завершения,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд4Завершения,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд5Завершения,
| ПлановыеНачисленияСрезПоследних.ТарифныйРазряд6Завершения,
| ПлановыеНачисленияСрезПоследних.Регистратор
|ИЗ
| РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(
| &ДатаСреза,
| Организация =ГоловнаяОрганизация
| И Сотрудник =Ссылка) КАК ПлановыеНачисленияСрезПоследних
|ГДЕ
| ВЫБОР
| КОГДА ПлановыеНачисленияСрезПоследних.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
| И ПлановыеНачисленияСрезПоследних.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| КОГДА ПлановыеНачисленияСрезПоследних.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
| И ПлановыеНачисленияСрезПоследних.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.ПустаяСсылка)
| ИДатаСреза < ПлановыеНачисленияСрезПоследних.ПериодЗавершения
| ТОГДА ЛОЖЬ
| КОГДА ПлановыеНачисленияСрезПоследних.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
| ИДатаСреза >= ПлановыеНачисленияСрезПоследних.ПериодЗавершения
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ" ;
Запрос. УстановитьПараметр( "ГоловнаяОрганизация" , Организация) ;
Запрос. УстановитьПараметр( "ДатаСреза" , ДатаО) ;
Запрос. УстановитьПараметр( "Ссылка" , Сотрудник) ;
Возврат Запрос. Выполнить( ) . Выгрузить( ) ;
КонецФункции
Функция ПолучитьСписокПлановыхУдержаний(Организация, Сотрудник, ДатаО) Экспорт
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ПлановыеУдержанияСрезПоследних.Период,
| ПлановыеУдержанияСрезПоследних.ВидРасчета,
| ПлановыеУдержанияСрезПоследних.Показатель1,
| ПлановыеУдержанияСрезПоследних.Валюта1,
| ПлановыеУдержанияСрезПоследних.Показатель2,
| ПлановыеУдержанияСрезПоследних.Валюта2,
| ПлановыеУдержанияСрезПоследних.Показатель3,
| ПлановыеУдержанияСрезПоследних.Валюта3,
| ПлановыеУдержанияСрезПоследних.Показатель4,
| ПлановыеУдержанияСрезПоследних.Валюта4,
| ПлановыеУдержанияСрезПоследних.Показатель5,
| ПлановыеУдержанияСрезПоследних.Валюта5,
| ПлановыеУдержанияСрезПоследних.Показатель6,
| ПлановыеУдержанияСрезПоследних.Валюта6,
| ПлановыеУдержанияСрезПоследних.Действие,
| ПлановыеУдержанияСрезПоследних.ПериодЗавершения,
| ПлановыеУдержанияСрезПоследних.ДействиеЗавершения,
| ПлановыеУдержанияСрезПоследних.Показатель1Завершения,
| ПлановыеУдержанияСрезПоследних.Показатель2Завершения,
| ПлановыеУдержанияСрезПоследних.Показатель3Завершения,
| ПлановыеУдержанияСрезПоследних.Показатель4Завершения,
| ПлановыеУдержанияСрезПоследних.Показатель5Завершения,
| ПлановыеУдержанияСрезПоследних.Показатель6Завершения,
| ПлановыеУдержанияСрезПоследних.Валюта1Завершения,
| ПлановыеУдержанияСрезПоследних.Валюта2Завершения,
| ПлановыеУдержанияСрезПоследних.Валюта3Завершения,
| ПлановыеУдержанияСрезПоследних.Валюта4Завершения,
| ПлановыеУдержанияСрезПоследних.Валюта5Завершения,
| ПлановыеУдержанияСрезПоследних.Валюта6Завершения,
| ПлановыеУдержанияСрезПоследних.Регистратор
|ИЗ
| РегистрСведений.ПлановыеУдержанияРаботниковОрганизаций.СрезПоследних(
| &ДатаСреза,
| Организация =ГоловнаяОрганизация
| И Физлицо =Ссылка) КАК ПлановыеУдержанияСрезПоследних
|ГДЕ
| ВЫБОР
| КОГДА ПлановыеУдержанияСрезПоследних.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
| И ПлановыеУдержанияСрезПоследних.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| КОГДА ПлановыеУдержанияСрезПоследних.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
| И ПлановыеУдержанияСрезПоследних.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.ПустаяСсылка)
| ИДатаСреза < ПлановыеУдержанияСрезПоследних.ПериодЗавершения
| ТОГДА ЛОЖЬ
| КОГДА ПлановыеУдержанияСрезПоследних.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
| ИДатаСреза >= ПлановыеУдержанияСрезПоследних.ПериодЗавершения
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ" ;
Запрос. УстановитьПараметр( "ГоловнаяОрганизация" , Организация) ;
Запрос. УстановитьПараметр( "ДатаСреза" , ДатаО) ;
Запрос. УстановитьПараметр( "Ссылка" , Сотрудник. Физлицо) ;
Возврат Запрос. Выполнить( ) . Выгрузить( ) ;
КонецФункции
Категория:
1С Зарплата и Управление Персоналом 2.5 запрос ФИО руководителя полностью, сделал на основе оригинальной функции Код 1C v 8.2 УП Функция ОтветственныеЛицаОрганизации(Организация, ДатаСреза, Исполнитель = Неопределено) Экспорт
Результат = Новый Структура( "Руководитель, РуководительДолжность, ГлавныйБухгалтер, Кассир" ) ;
Если Организация < > Неопределено тогда
ЗапросПоЛицам = Новый Запрос( ) ;
ЗапросПоЛицам. УстановитьПараметр( "Организация" , Организация) ;
ЗапросПоЛицам. УстановитьПараметр( "ДатаСреза" , ДатаСреза) ;
ЗапросПоЛицам. Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ОтветственныеЛицаОрганизацииСрезПоследних.ОтветственноеЛицо,
| ОтветственныеЛицаОрганизацииСрезПоследних.Должность.Наименование КАК Должность,
| ВЫБОР КОГДА (ФИОФизЛицСрезПоследних.ФизЛицо) ЕСТЬ NULL ТОГДА ОтветственныеЛицаОрганизацииСрезПоследних.ФизическоеЛицо.Наименование ИНАЧЕ ФИОФизЛицСрезПоследних.Фамилия + ВЫБОР КОГДА (ФИОФизЛицСрезПоследних.Имя) <> "" "" ТОГДА "" "" + (ФИОФизЛицСрезПоследних.Имя) ИНАЧЕ "" "" КОНЕЦ + ВЫБОР КОГДА (ФИОФизЛицСрезПоследних.Отчество) <> "" "" ТОГДА "" "" + (ФИОФизЛицСрезПоследних.Отчество) ИНАЧЕ "" "" КОНЕЦ КОНЕЦ КАК ФИОПолное
|ИЗ
| РегистрСведений.ОтветственныеЛицаОрганизации.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница =Организация) КАК ОтветственныеЛицаОрганизацииСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаСреза, ФизЛицо ССЫЛКА Справочник.ФизическиеЛица) КАК ФИОФизЛицСрезПоследних
| ПО ОтветственныеЛицаОрганизацииСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследних.ФизЛицо" ;
Выборка = ЗапросПоЛицам. Выполнить( ) . Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Если Выборка. ОтветственноеЛицо = Перечисления. ОтветственныеЛицаОрганизации. Руководитель Тогда
Результат. Руководитель = Выборка. ФИОПолное;
Результат. РуководительДолжность = Выборка. Должность;
ИначеЕсли Выборка. ОтветственноеЛицо = Перечисления. ОтветственныеЛицаОрганизации. ГлавныйБухгалтер Тогда
Результат. ГлавныйБухгалтер = Выборка. ФИОПолное;
ИначеЕсли Выборка. ОтветственноеЛицо = Перечисления. ОтветственныеЛицаОрганизации. Кассир Тогда
Результат. Кассир = Выборка. ФИОПолное;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
Возврат Результат;
КонецФункции
Категория:
1С Управление торговлей 10.3 Полезные функции: Принятые и Уволенные, работающие сотрудники, Неполное рабочее время, Отпуск без ЗП Дорабатывая у клиента отчет по данным для предоставления в статистику - появилось несколько готовых функций, которые Вам наверняка понадобятся:
Код 1C v 8.х Функция ПолучитьКоличествоСотрудниковСНеполнымРабочимДнём(Запрос)
Запрос. Текст =
"ВЫБРАТЬ
| МАКСИМУМ(Работники.НеполноеРабочееВремя) КАК НеполноеРабочееВремя,
| Работники.Сотрудник КАК Сотрудник
|ПОМЕСТИТЬ ВТ_СписокРаботниковНаНеполномРабочемГрафике
|ИЗ
| (ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
| РаботникиОрганизацийСрезПоследних.ГрафикРаботы.СокращенноеРабочееВремя КАК НеполноеРабочееВремя
| ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НачалоПериода, Организация =Организация) КАК РаботникиОрганизацийСрезПоследних
| ГДЕ
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
| И РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаботникиОрганизаций.Сотрудник,
| РаботникиОрганизаций.ГрафикРаботы.СокращенноеРабочееВремя
| ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ГДЕ
| РаботникиОрганизаций.Период МЕЖДУНачалоПериода ИКонецПериода
| И РаботникиОрганизаций.Организация =Организация
| И РаботникиОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)) КАК Работники
|ГДЕ
| Работники.НеполноеРабочееВремя
|
|СГРУППИРОВАТЬ ПО
| Работники.Сотрудник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СписокРаботниковНаНеполномРабочемГрафике.Сотрудник) КАК КоличествоСотрудниковНаСокрРабВремени
|ИЗ
| ВТ_СписокРаботниковНаНеполномРабочемГрафике КАК ВТ_СписокРаботниковНаНеполномРабочемГрафике" ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Возврат Выборка. КоличествоСотрудниковНаСокрРабВремени
Иначе
Возврат 0
КонецЕсли ;
КонецФункции
Функция ПолучитьКоличествоСотрудниковИмевшихОтпускаБезСохраненияЗП(Запрос)
Запрос. Текст =
"ВЫБРАТЬ
| СостояниеРаботниковСрезПоследних.Сотрудник КАК Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиВОтпускахБезСохрЗП
|ИЗ
| РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&НачалоПериода, Организация =Организация) КАК СостояниеРаботниковСрезПоследних
|ГДЕ
| СостояниеРаботниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты)
| И ВЫБОР
| КОГДА СостояниеРаботниковСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА СостояниеРаботниковСрезПоследних.ПериодЗавершения >=НачалоПериода
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И СостояниеРаботниковСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СостояниеРаботниковОрганизаций.Сотрудник
|ИЗ
| РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
|ГДЕ
| СостояниеРаботниковОрганизаций.Период МЕЖДУНачалоПериода ИКонецПериода
| И СостояниеРаботниковОрганизаций.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты)
| И СостояниеРаботниковОрганизаций.Организация =Организация
| И СостояниеРаботниковОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиВОтпускахБезСохрЗП.Сотрудник) КАК КоличествоСотрудниковВОтпускеБезСохраненияЗП
|ИЗ
| ВТ_СотрудникиВОтпускахБезСохрЗП КАК ВТ_СотрудникиВОтпускахБезСохрЗП" ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Возврат Выборка. КоличествоСотрудниковВОтпускеБезСохраненияЗП
Иначе
Возврат 0
КонецЕсли ;
КонецФункции
Функция ПолучитьКоличествоПринятыхСотрудников(Запрос)
Запрос. Текст =
"ВЫБРАТЬ
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиПринятыеПоПриемуНаРаботу
|ИЗ
| Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
|ГДЕ
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема МЕЖДУНачалоПериода ИКонецПериода
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация =Организация
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиПринятыеПоПриемуНаРаботу.Сотрудник) КАК КоличествоСотрудниковПринятыхНаРаботу
|ИЗ
| ВТ_СотрудникиПринятыеПоПриемуНаРаботу КАК ВТ_СотрудникиПринятыеПоПриемуНаРаботу" ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Возврат Выборка. КоличествоСотрудниковПринятыхНаРаботу
Иначе
Возврат 0
КонецЕсли ;
КонецФункции
Функция ПолучитьКоличествоУволенныхСотрудников(Запрос)
Запрос. Текст =
"ВЫБРАТЬ
| УвольнениеИзОрганизацийРаботникиОрганизации.Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиУволенные
|ИЗ
| Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацийРаботникиОрганизации
|ГДЕ
| УвольнениеИзОрганизацийРаботникиОрганизации.ДатаУвольнения МЕЖДУНачалоПериода ИКонецПериода
| И УвольнениеИзОрганизацийРаботникиОрганизации.Ссылка.Проведен
| И УвольнениеИзОрганизацийРаботникиОрганизации.Ссылка.Организация =Организация
| И УвольнениеИзОрганизацийРаботникиОрганизации.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиУволенные.Сотрудник) КАК КоличествоУволенныхСотрудников
|ИЗ
| ВТ_СотрудникиУволенные КАК ВТ_СотрудникиУволенные" ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Возврат Выборка. КоличествоУволенныхСотрудников;
Иначе
Возврат 0
КонецЕсли ;
КонецФункции
Функция ПолучитьКоличествоСотрудниковСписочногоСостава(Запрос)
Запрос. Текст =
"ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиСписочногоСостава
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1), Организация =Организация) КАК РаботникиОрганизацийСрезПоследних
|ГДЕ
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
| И (РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
| ИЛИ РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиСписочногоСостава.Сотрудник) КАК КоличествоСотрудниковСписочногоСостава
|ИЗ
| ВТ_СотрудникиСписочногоСостава КАК ВТ_СотрудникиСписочногоСостава" ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Возврат Выборка. КоличествоСотрудниковСписочногоСостава;
Иначе
Возврат 0
КонецЕсли ;
КонецФункции
- - - - - - - - - - Использование - - - - - - - - - - - - - - - - - - -
Запрос = Новый Запрос;
Запрос. УстановитьПараметр( "Организация" , Организация) ;
Запрос. УстановитьПараметр( "НачалоПериода" , НачалоДня( мДатаНачалаПериодаОтчета) ) ;
Запрос. УстановитьПараметр( "КонецПериода" , КонецДня( мДатаКонцаПериодаОтчета) ) ;
СтруктураПолей. П0001000201 = ПолучитьКоличествоСотрудниковСНеполнымРабочимДнём( Запрос) ;
СтруктураПолей. П0001000501 = ПолучитьКоличествоСотрудниковИмевшихОтпускаБезСохраненияЗП( Запрос) ;
СтруктураПолей. П0001000601 = ПолучитьКоличествоПринятыхСотрудников( Запрос) ;
СтруктураПолей. П0001000801 = ПолучитьКоличествоУволенныхСотрудников( Запрос) ;
СтруктураПолей. П0001001201 = СтруктураПолей. П0001000801 ;
СтруктураПолей. П0001001301 = ПолучитьКоличествоСотрудниковСписочногоСостава( Запрос) ;
Категория:
1С Зарплата и Управление Персоналом 2.5 Разница между датами в рабочих днях, подсчет рабочих дней в 1С Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты.
В этой статье примеры кода и запросы в которых считается количество рабочих дней:
Код, при вычислении определяет только по дню недели, викидывая выходные. Праздники не учитывает!
Код 1C v 8.х Функция РабочихДнейСДаты(НачДата,КолвоДней) Экспорт
Перем РабочихДней, ОбычныхДней, ДеньНедели;
РабочихДней = 0 ; ОбычныхДней = 0 ;
Пока РабочихДней < Число( КолвоДней) Цикл
ОбычныхДней = ОбычныхДней+ 1 ;
ДеньНедели= ДеньНедели( НачДата+ ( ОбычныхДней* 86400 ) ) ;
Если ДеньНедели < 6 Тогда
РабочихДней= РабочихДней+ 1 ;
КонецЕсли ;
КонецЦикла ;
Возврат ( НачДата + ( РабочихДней* 86400 ) ) ;
КонецФункции
ТриДняОтОбработки = РабочихДнейСДаты( нДатаОбработки, 3 ) ;
Если РабочаяДата> ТриДняОтОбработки Тогда
Предупреждение( "Прошло больше 3-х дней после обработки заказа. Цены не актуальны!
|Отправьте заказ на новую обработку! " ) ;
Иначе
КонецЕсли ;
В запросе, с использованием производственного календаря и учетом всех праздников:
Код 1C v 8.х ВЫБРАТЬ
РегламентированныйПроизводственныйКалендарь. ДатаКалендаря КАК Дата
ПОМЕСТИТЬ Даты
ИЗ
РегистрСведений. РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
РегламентированныйПроизводственныйКалендарь. ДатаКалендаря В( &ВходящиеДаты)
;
ВЫБРАТЬ
Даты. Дата,
КОЛИЧЕСТВО( РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь. ДатаКалендаря) КАК КоличествоРабочихДней,
МАКСИМУМ( РегламентированныйПроизводственныйКалендарь. ДатаКалендаря) КАК ДатаКалендаря,
РегламентированныйПроизводственныйКалендарь1 . ДатаКалендаря КАК ДатаКалендаряДляГруппировки
ИЗ
РегистрСведений. РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Даты КАК Даты
ПО ( Даты. Дата < = РегламентированныйПроизводственныйКалендарь. ДатаКалендаря)
И ( ДОБАВИТЬКДАТЕ( Даты. Дата, ДЕНЬ, ГлубинаДней) > РегламентированныйПроизводственныйКалендарь. ДатаКалендаря)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений. РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь1
ПО РегламентированныйПроизводственныйКалендарь. ДатаКалендаря < = РегламентированныйПроизводственныйКалендарь1 . ДатаКалендаря
ГДЕ
( РегламентированныйПроизводственныйКалендарь. ВидДня = ЗНАЧЕНИЕ( Перечисление. ВидыДнейПроизводственногоКалендаря. Предпраздничный)
ИЛИ РегламентированныйПроизводственныйКалендарь. ВидДня = ЗНАЧЕНИЕ( Перечисление. ВидыДнейПроизводственногоКалендаря. Рабочий) )
СГРУППИРОВАТЬ ПО
РегламентированныйПроизводственныйКалендарь1 . ДатаКалендаря,
Даты. Дата
ИМЕЮЩИЕ
МАКСИМУМ( РегламентированныйПроизводственныйКалендарь. ДатаКалендаря) = РегламентированныйПроизводственныйКалендарь1 . ДатаКалендаря
И КОЛИЧЕСТВО( РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь. ДатаКалендаря) = РабочихДней
Еще один вариант, в котором допустим, что:
1) Регистр сведений Календарь имеет структуру (Измерения={ДатаКалендаря}, Ресурсы={ВидДня}), а перечисление ВидыДня задано как {Рабочий, Предпразничный} и праздничные дни в календаре отсутствуют.
2) В документе Реализация заданы поля Дата и ОтсрочкаДней. Тогда:
Код 1C v 8.х Выбрать
Р. Ссылка, Р. Дата,
минимум( isnull( К. ДатаКалендаря, добавитькдате( Р. Дата, день, Р. ОтсрочкаДней) ) ) как ДатаКредита
из Документ. Реализация как Р
левое соединение РегистрСведений. Календарь как К
по добавитькдате( Р. Дата, день, Р. ОтсрочкаДней) < = К. ДатаКалендаря
сгруппировать по
Р. Ссылка, Р. Дата
Собственно, если календарь содержит и праздничные дни, то можно добавить секцию ГДЕ, и там отобрать только рабочие дни. В секции ГДЕ можно отобрать и интересующий календарь, если ведется несколько календарей.
Категория:
Работа с Датами (Временем) Управление регистрацией документа в последовательности документов Для управления регистрацией документа в последовательности документов служит набор записей регистрации в последовательности документов.
У документа есть свойство ПринадлежностьПоследовательностям. Значением свойства является коллекция наборов записей регистрации в последовательности документов. Для каждой последовательности, в которой участвует документ, существует свой собственный экземпляр набора записей. Если у документа стоит режим автоматического заполнения последовательностей, то перед записью документа наборы записей регистрации будут автоматически заполнены. Для последовательностей без измерений набор записей будет содержать только одну запись. Для последовательностей с измерениями число записей зависит от содержания документа и настройки соответствия измерений последовательности реквизитам документа.
Набор записей автоматически заполняется до записи документа и записывается после записи документа в одной транзакции с ним. Это позволяет в обработчиках событий документа ПередЗаписью() и ПриЗаписи() переопределить набор записей регистрации. Так, например, если документ входит в последовательность Последовательность1 и у документа стоит признак автоматического заполнения последовательности, то для того что бы отменить его регистрацию в последовательности в зависимости от значения реквизита документа достаточно в модуль документа вставить обработчик события ПередЗаписью() следующего содержания:
Код 1C v 8.х Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не Регистрировать Тогда
ПринадлежностьПоследовательностям. Последовательность1 . Очистить( ) ;
КонецЕсли ;
КонецПроцедуры
В этом случае если реквизит Регистрировать имеет значение "Ложь", то документ не будет зарегистрирован в последовательности Последовательность1. Кроме отмены регистрации документа в последовательности, доступна возможность написания собственного алгоритма регистрации документа в последовательности. Для этого надо очистить набор записей регистрации и заполнить его новыми записями.
Код 1C v 8.х Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ПринадлежностьПоследовательностям. Последовательность1 . Очистить( ) ;
Если ВидРегистрации = 1 Тогда
ЗП = ПринадлежностьПоследовательностям. Последовательность1 . Добавить( ) ;
ЗП. Измерение = Реквизит1 ;
ИначеЕсли ВидРегистрации = 2 Тогда
ПринадлежностьПоследовательностям. Последовательность1 . Добавить( ) ;
ЗП. Измерение = Реквизит2 ;
КонецЕсли ;
КонецПроцедуры
Пример
Код 1C v 8.х // Зарегистрируем в последовательности УУ
Если ОтражатьВУправленческомУчете Тогда
ЗаписьРегистрации = ПринадлежностьПоследовательностям.ПартионныйУчет.Добавить();
ЗаписьРегистрации.Период = Дата;
КонецЕсли;
Процедура ПоследовательностьВзаиморачеты(ДокумСсылка) Экспорт
ДокументМоментВремени = Новый МоментВремени(ДокумСсылка.дата, ДокумСсылка);
НаборЗаписей = Последовательности.Взаиморасчеты.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокумСсылка);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Регистратор = ДокумСсылка;
НоваяЗапись.Период = ДокумСсылка.Дата;
НаборЗаписей.Записать();
//Установим границу последовательности на документ
Последовательности.Взаиморасчеты.УстановитьГраницу(ДокументМоментВремени);
КонецПроцедуры
Функция ПолучитьГраницуПоследовательности(Организация = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПартионныйУчетГраницы.МоментВремени
|ИЗ
| Последовательность.ПартионныйУчет.Границы КАК ПартионныйУчетГраницы
|";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.МоментВремени;
Иначе
Возврат Новый МоментВремени('00010101');
КонецЕсли;
КонецФункции
Процедура ОбновитьСписокПоследовательностей()
Для каждого Последовательность Из Обр.СписокПоследовательностей Цикл
ИмяПоследовательности = Последовательность.ИмяПоследовательности;
ГраницаПоследовательности = Последовательности[ИмяПоследовательности].ПолучитьГраницу();
ДатаГраницы = ГраницаПоследовательности.Дата;
Последовательность.Актуальность = "" + ДатаГраницы + " " + ГраницаПоследовательности.Ссылка;
Последовательность.ДатаГраницы = ДатаГраницы;
КонецЦикла;
КонецПроцедуры
// Процедура выполняет поиск и исправление ошибок в последовательности.
//
Процедура КорректировкаРегистрацииВПоследовательности()
Для Каждого ТекПоследовательность Из Метаданные.Последовательности Цикл
ТекстЕстьДвижения = "
| ВЫБОР
| КОГДА СписанныеТоварыСрезПоследних.Регистратор ЕСТЬ NULL";
Для Каждого ДвиженияВлияющиеНаПоследовательность Из ТекПоследовательность.Движения Цикл
ТекстЕстьДвижения = ТекстЕстьДвижения + "
| И РегистрНакопления" + ДвиженияВлияющиеНаПоследовательность.Имя + ".Регистратор ЕСТЬ NULL";
КонецЦикла;
ТекстЕстьДвижения = ТекстЕстьДвижения + "
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ";
ТекстЗапроса = "ВЫБРАТЬ
| Последовательность.Регистратор КАК Регистратор,
| Последовательность.Регистратор.Проведен КАК Проведен,
| Последовательность.Регистратор.Дата КАК Дата,
| Последовательность.Период КАК Период,
|" + ТекстЕстьДвижения + " КАК ЕстьДвижения
|ИЗ
| Последовательность." + ТекПоследовательность.Имя + " КАК Последовательность
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СписанныеТовары КАК СписанныеТоварыСрезПоследних
| ПО Последовательность.Регистратор = СписанныеТоварыСрезПоследних.Регистратор
| И СписанныеТоварыСрезПоследних.НомерСтроки = 1";
Для Каждого ДвиженияВлияющиеНаПоследовательность Из ТекПоследовательность.Движения Цикл
ТекстЗапроса = ТекстЗапроса + "
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления." +ДвиженияВлияющиеНаПоследовательность.Имя + ".Обороты(, , Регистратор, ) КАК РегистрНакопления" + ДвиженияВлияющиеНаПоследовательность.Имя + "
| ПО Последовательность.Регистратор = РегистрНакопления" + ДвиженияВлияющиеНаПоследовательность.Имя + ".Регистратор";
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + "
|ГДЕ
| НЕ (Последовательность.Регистратор.Проведен
| И (Последовательность.Регистратор ССЫЛКА Документ.КорректировкаСтоимостиСписанияТоваров
| ИЛИ Последовательность.Регистратор.Дата = Последовательность.Период)
| И " + ТекстЕстьДвижения + ")
|";
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Не Выборка.Проведен Тогда
НаборЗаписей = Последовательности[ТекПоследовательность.Имя].СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Записать();
ИначеЕсли (Выборка.Дата <> Выборка.Период)
И (ТипЗнч(Выборка.Регистратор) <> Тип("ДокументСсылка.КорректировкаСтоимостиСписанияТоваров")) Тогда
НаборЗаписей = Последовательности[ТекПоследовательность.Имя].СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();
Для Каждого СтрокаНабора Из НаборЗаписей Цикл
СтрокаНабора.Период = Выборка.Дата;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
Если Не Выборка.ЕстьДвижения Тогда
НаборЗаписей = Последовательности[ТекПоследовательность.Имя].СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Записать();
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура УдалитьРегистрациюДокументаВПоследовательностях(ДокументОбъект, ПроверятьДвижения = Ложь)Экспорт
// получение списка последовательностей в которых зарегистрирован документ
Если ПроверятьДвижения Тогда
ТаблицаРегистраций = ОпределитьНаличиеРегистрацииДокументаВПоследовательности(ДокументОбъект);
КонецЕсли;
КоллекцияПоследовательностей = ДокументОбъект.ПринадлежностьПоследовательностям;
Для Каждого НаборЗаписейРегистрацииВПоследовательности ИЗ КоллекцияПоследовательностей Цикл
Если (НаборЗаписейРегистрацииВПоследовательности.Количество() > 0)
ИЛИ (ПроверятьДвижения И (НЕ ТаблицаРегистраций.Найти(НаборЗаписейРегистрацииВПоследовательности.Метаданные().Имя,"Имя") = Неопределено)) Тогда
НаборЗаписейРегистрацииВПоследовательности.Очистить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры//УдалитьРегистрациюДокументаВПоследовательностях
Функция ОпределитьНаличиеРегистрацииДокументаВПоследовательности(ДокументОбъект) Экспорт
ТекстЗапроса = "";
Для Каждого Последовательность ИЗ ДокументОбъект.ПринадлежностьПоследовательностям Цикл
// в запросе получаем имена последовательностей, в которых документ зарегистрирован
ТекстЗапроса = ТекстЗапроса + "
|" + ?(ТекстЗапроса = "", "", "ОБЪЕДИНИТЬ ВСЕ ") + "
|ВЫБРАТЬ """ + Последовательность.Метаданные().Имя
+ """ КАК Имя ИЗ " + Последовательность.Метаданные().ПолноеИмя()
+ " ГДЕ Регистратор =Регистратор";
КонецЦикла;
Если ТекстЗапроса = "" Тогда
Возврат Новый ТаблицаЗначений();
Иначе
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Регистратор", ДокументОбъект.Ссылка);
ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();
Возврат ТаблицаЗапроса;
КонецЕсли;
КонецФункции
Категория:
Документы Универсальные функции работы с регистрами сведений Разработка любой конфигурации потребует использования регистров сведений! Чтобы упростить запись и чтение данных в регистре сведений, Вы можете использовать универсальные функции:
Код 1C v 8.х
Процедура ДобавитьЗаписьВРегистрСведений(СтруктураЗаписи, Знач ИмяРегистра, Загрузка = Ложь) Экспорт
НаборЗаписей = СоздатьНаборЗаписейРегистраСведений( СтруктураЗаписи, ИмяРегистра) ;
НоваяЗапись = НаборЗаписей. Добавить( ) ;
ЗаполнитьЗначенияСвойств( НоваяЗапись, СтруктураЗаписи) ;
НаборЗаписей. ОбменДанными. Загрузка = Загрузка;
НаборЗаписей. Записать( ) ;
КонецПроцедуры
Процедура ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, Знач ИмяРегистра) Экспорт
МетаданныеРегистра = Метаданные. РегистрыСведений[ИмяРегистра];
МенеджерЗаписи = РегистрыСведений[ИмяРегистра]. СоздатьМенеджерЗаписи( ) ;
Для Каждого Измерение ИЗ МетаданныеРегистра. Измерения Цикл
Если СтруктураЗаписи. Свойство( Измерение. Имя) Тогда
МенеджерЗаписи[Измерение. Имя] = СтруктураЗаписи[Измерение. Имя];
КонецЕсли ;
КонецЦикла ;
МенеджерЗаписи. Прочитать( ) ;
ЗаполнитьЗначенияСвойств( МенеджерЗаписи, СтруктураЗаписи) ;
МенеджерЗаписи. Записать( ) ;
КонецПроцедуры
Процедура УдалитьНаборЗаписейВРегистреСведений(СтруктураЗаписи, ИмяРегистра, Загрузка = Ложь) Экспорт
НаборЗаписей = СоздатьНаборЗаписейРегистраСведений( СтруктураЗаписи, ИмяРегистра) ;
НаборЗаписей. ОбменДанными. Загрузка = Загрузка;
НаборЗаписей. Записать( ) ;
КонецПроцедуры
Функция СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, ИмяРегистра) Экспорт
МетаданныеРегистра = Метаданные. РегистрыСведений[ИмяРегистра];
НаборЗаписей = РегистрыСведений[ИмяРегистра]. СоздатьНаборЗаписей( ) ;
Для Каждого Измерение ИЗ МетаданныеРегистра. Измерения Цикл
Если СтруктураЗаписи. Свойство( Измерение. Имя) Тогда
НаборЗаписей. Отбор[Измерение. Имя]. Установить( СтруктураЗаписи[Измерение. Имя]) ;
КонецЕсли ;
КонецЦикла ;
Возврат НаборЗаписей;
КонецФункции
Категория:
Регистры сведений Как прочитать записи регистра сведений установив отбор и удалить записи? Прочитать записи регистра сведений можно двумя способами: Через Набор Записей или Менеджер
Вот пример через набор записей :
Код 1C v 8.х
НаборЗаписей = РегистрыСведений. ДокументоОборот. СоздатьНаборЗаписей( ) ;
НаборЗаписей. Отбор. Доставка. Установить( Доставка) ;
НаборЗаписей. Отбор. Этап. Установить( Этап) ;
НаборЗаписей. Прочитать( ) ;
Для каждого Запись из НаборЗаписей Цикл
Запись. ДатаВремя = ДатаР;
Запись. Отдел = фио. Подразделение;
Запись. ФИО = ПараметрыСеанса. ТекущийПользователь;
Запись. Документы = Документы;
Запись. Примечание = Примечание;
КонецЦикла ;
НаборЗаписей. Записать( ) ;
Пример с использованием набора записей и менеджера записи:
Код 1C v 8.х НаборЗаписей = РегистрыСведений. CRM_Напоминания. СоздатьНаборЗаписей( ) ;
Отбор = НаборЗаписей. Отбор;
Отбор. Объект. Установить( Объект. Ссылка) ;
Отбор. Завершено. Установить( Ложь ) ;
НаборЗаписей. Прочитать( ) ;
Если НаборЗаписей. Количество( ) > 0 Тогда
Если ЗадаватьВопрос Тогда
ТекстВопроса = "Завершить все напоминания для " + Строка( Объект. Ссылка) + " ?" ;
Ответ = Вопрос( ТекстВопроса, РежимДиалогаВопрос. ДаНет, , КодВозвратаДиалога. Да) ;
Иначе
Ответ = КодВозвратаДиалога. Да
КонецЕсли ;
Если Ответ = КодВозвратаДиалога. Да Тогда
Для каждого Запись Из НаборЗаписей Цикл
РегистрСведенийМенеджерЗаписи = РегистрыСведений. CRM_Напоминания. СоздатьМенеджерЗаписи( ) ;
ЗаполнитьЗначенияСвойств( РегистрСведенийМенеджерЗаписи, Запись) ;
РегистрСведенийМенеджерЗаписи. Прочитать( ) ;
Если РегистрСведенийМенеджерЗаписи. Выбран( ) Тогда
Если НЕ РегистрСведенийМенеджерЗаписи. УдалитьПоИстеченииСрока Тогда
РегистрСведенийМенеджерЗаписи. Завершено = Истина ;
РегистрСведенийМенеджерЗаписи. Записать( ) ;
Иначе
РегистрСведенийМенеджерЗаписи. Удалить( ) ;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
КонецЕсли ;
А вот пример через менеджер записи:
Код 1C v 8.х МенеджерЗаписи = РегистрыСведений. НоменклатураКонтрагентов. СоздатьМенеджерЗаписи( ) ;
МенеджерЗаписи. Контрагент = Контрагент;
МенеджерЗаписи. Номенклатура = СтрокаТаблицыТовары. Номенклатура;
МенеджерЗаписи. ХарактеристикаНоменклатуры = СтрокаТаблицыТовары. ХарактеристикаНоменклатуры;
МенеджерЗаписи. Прочитать( ) ;
Если МенеджерЗаписи. Выбран( ) Тогда
Вес = МенеджерЗаписи. ВесНоменклатурыКонтрагента;
КонецЕсли ;
Категория:
Регистры сведений Как установить параметр динамического списка? Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента
Для вывода используется используется запрос:
Код 1C v 8.3 ВЫБРАТЬ
РегистрСведенийFinans. Период,
РегистрСведенийFinans. Клиент,
РегистрСведенийFinans. Движение,
РегистрСведенийFinans. Расшифровка,
РегистрСведенийFinans. СуммаОбщая,
РегистрСведенийFinans. РасходыСервиса,
РегистрСведенийFinans. W1C
ИЗ
РегистрСведений. Finans КАК РегистрСведенийFinans
ГДЕ
РегистрСведенийFinans. Клиент = Клиент
Чтобы при открытии не отображалась информацию по другим клиентам, необходимо установить параметр динамического списка , сделаем это так:
Код 1C v 8.3 &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Финансы. Параметры. УстановитьЗначениеПараметра( "Клиент" , Объект. Ссылка) ;
КонецПроцедуры
Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных
Подробнее об этом: Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором?
Категория:
Работа с Формой (Диалог) и её элементами