Всякие полезности

02.06.15

Разработка - Универсальные функции

Всякие полезные функции, которые каждый из нас использовал, собраны в общую кучу.

1С:8.1 Примеры разработки

Примитивные типы, системные функции

Как явно указать нужную дату?

'20050308' Дата(2005, 1, 1) Дата(1, 1, 1) Дата(2005, 1, 1, 10, 29, 50) ДАТАВРЕМЯ(2005, 01, 01)

Как проверить дату на пустое значение?

Если ДатаПроверяемая = Дата(1, 1, 1) Тогда Сообщить("Пустая дата!"); КонецЕсли;

Как сравнить две даты (дни)?

Если НачалоДня(Дата1) = НачалоДня(Дата2) Тогда Сообщить("Дни совпадают!"); КонецЕсли;

Как прибавить к дате день, месяц?

СледующийДень = ТекущаяДата() + 60 * 60 * 24;
ДобавитьМесяц(Дата(2005, 1, 31), 1) ДобавитьМесяц(Дата(2005, 2, 28), -1) КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1))
ФункцияПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней) Запрос = НовыйЗапрос(" |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата"; Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата); Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней); ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата; КонецФункции

Как можно проверить тип значения переменной на равенство нужному?

ИмяНужногоТипа = "ДокументСсылка.РеализацияТоваров"; Если ТипЗнч(ОбрабатываемыйДокумент) = Тип(ИмяНужногоТипа) Тогда // Строки кода, выполняемые при истинности условия. КонецЕсли;

Как очистить реквизит формы, имеющий ссылочный тип?

 Товар = Справочники.Номенклатура.ПустаяСсылка();

Как очистить значение, имеющее тип "Хранилище значения"?

РеквизитХранилище = Неопределено;

Как проверить тип значения, помещенного в реквизит имеющий тип "Хранилище значения"?

Значение = Фотография.Получить(); Если Значение <> Неопределено Тогда Если ТипЗнч(Значение) = Тип("Строка") Тогда // Обработать строку. ИначеЕсли ТипЗнч(Значение) = Тип("Картинка") Тогда // Обработать картинку. Сообщить("Картинка"); КонецЕсли; КонецЕсли;

Как сжать данные, помещаемые в хранилище значения?

СопроводительнаяИнформация = Новый ХранилищеЗначения(ПомещаемоеЗначение, Новый СжатиеДанных(9));

Как предоставить пользователю возможность выбора значения составного типа?

МассивТипов = Новый Массив; МассивТипов.Добавить(Тип("СправочникСсылка.ФизЛица")); // Добавить другие типы.
ОписаниеВозможныхТипов = Новый ОписаниеТипов(МассивТипов);
ПолученноеЗначение = Неопределено; ВвестиЗначение(ПолученноеЗначение, "Выберите значение:", ОписаниеВозможныхТипов);

Как применить округление при работе с вычисляемыми числовыми полями в запросе?

ВЫБРАТЬ ПродажиОбороты.Номенклатура, ВЫРАЗИТЬ(ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот КАК ЧИСЛО(15, 2)) КАК СредняяЦенаПродажи ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты

Как вывести многострочное предупреждение?

 Предупреждение("На складе: " + Остаток + Символы.ПС + "В резерве : " + Зарезервировано + Символы.ПС + "Свободный остаток: " + (Остаток - Зарезервировано), 20, "Состояние остатков");

Как при выполнении обработки сообщить пользователю текущее время?

ТекущееВремя = Формат(ТекущаяДата(), "ДЛФ=В"); Сообщить(ТекущееВремя);

Как вывести число прописью по-русски, но без дробной части?

ФорматнаяСтрока = "Л=ru_RU"; ПараметрыПредметаИсчисления = " , , , , , , , , 0"; Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как вывести число прописью по-русски, с указанием сотых в дробной части?

ПараметрыПредметаИсчисления = "целая, целых, целых, ж, сотая, сотой, сотых, ж, 2" ФорматнаяСтрока = "Л=ru_RU; ДП=Истина"; Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как вывести прописью число килограммов с указанием дробной части в граммах?

ПараметрыПредметаИсчисления = "килограмм, килограмма, килограммов, м, грамм, грамма, граммов, м, 3"; ФорматнаяСтрока = "Л=ru_RU; ДП=Истина"; Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как долларовую сумму вывести прописью по-английски?

ФорматнаяСтрока = "Л=en_US"; ПараметрыПредметаИсчисления = "dollar, dollars, cent, cents, 2"; Сообщить(ЧислоПрописью(Сумма, ФорматнаяСтрока, ПараметрыПредметаИсчисления));

Как загрузить внешнюю компоненту?

Попытка ЗагрузитьВнешнююКомпоненту("scanopos.dll") Исключение Сообщить("Ошибка загрузки внешней компоненты!"); КонецПопытки;
Попытка // Получить объект компоненты. Объект = Новый("AddIn.Scanner"); Исключение Сообщить("Не удалось создать объект внешней компоненты"); КонецПопытки;

Как выполнить команду операционной системы?

КомандаСистемы("del *.* /q", "c:\temp");
КомандаСистемы("cmd");
ЗапуститьПриложение("ШаблонДоговора.doc");

Как реализовать код процедуры в зависимости от режима выполнения (на клиенте, на сервере, во внешнем соединении) ?

#Если ВнешнееСоединениеТогда // Фрагмент кода, который должен выполняться в сессии внешнего соединения. #КонецЕсли
#Если Клиент Тогда // Фрагмент кода, который должен выполняться на клиентском месте. #КонецЕсли
#Если Сервер Тогда // Фрагмент кода, который должен выполняться на сервере. #КонецЕсли

Как при групповой обработке объектов реализовать стратегию "либо все, либо ничего"?

НачатьТранзакцию(); // В переменной "ВыборкаДанных" содержатся данные для записи в справочник. Пока ВыборкаДанных.Следующий() Цикл ЭлементОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЭлементОбъект.Код = Выборка.Код; ЭлементОбъект.Наименование = Выборка.Наименование; // Остальные реквизиты ЭлементОбъект.Записать(); КонецЦикла; ЗафиксироватьТранзакцию(); ОтменитьТранзакцию();

Как посчитать сумму по формуле сложного процента?

Функция СложныйПроцент(Кредит, Ставка, Срок = 1) Возврат Кредит*Pow(1 + Ставка/100, Срок); КонецФункции

Универсальные коллекции

Массив

В каких ситуациях обычно используются массивы?

Как создать массив?

СозданныйМассив = Новый Массив ();
СозданныйМассив = Новый Массив (10);

Как создать многомерный массив?

ДвумерныйМассив = Новый Массив (2, 8);
ДвумерныйМассив = Новый Массив; МассивВторогоПорядка = Новый Массив(8); ДвумерныйМассив.Добавить(МассивВторогоПорядка); ДвумерныйМассив.Добавить(МассивВторогоПорядка);
Значение = ДвумерныйМассив[2][5]; Значение = ДвумерныйМассив.Получить(2).Получить(5);

Как добавить элементы в массив?

НашМассив.Добавить(НовоеЗначение);
Массив = Новый Массив; Массив.Вставить(5, "ООО ""Лабан""");

Как определить размер массива?

Размер = НашМассив.Количество();

Как обратиться к элементу массива?

ПервоеЗначение = НашМассив[0]; НашМассив[9] = ДесятоеЗначение;
ПервоеЗначение = НашМассив.Получить(0); НашМассив.Установить(9, ДесятоеЗначение);

Как перебрать элементы массива?

Для Каждого ЭлементМассива Из МассивЭлементов Цикл Если ТипЗнч(ЭлементМассива) = Тип("Число") Тогда Сообщить(ЭлементМассива); КонецЕсли; КонецЦикла; Для Сч = 0 по МассивЭлементов.ВГраница() Цикл Если ТипЗнч(МассивЭлементов[Сч]) = Тип("Число") Тогда МассивЭлементов[Сч] = 0; КонецЕсли; КонецЦикла;

Как удалить элемент массива?

МассивЭлементов.Удалить(0); Индекс = МассивЭлементов.ВГраница(); Пока Индекс >= 0 Цикл Если ТипЗнч(МассивЭлементов[Индекс]) = Тип("Число") Тогда МассивЭлементов.Удалить(Индекс); КонецЕсли; Индекс = Индекс - 1; КонецЦикла;

Как удалить все элементы массива?

Массив.Очистить();

Как удалить повторяющиеся элементы массива?

Процедура УдалитьПовторяющиесяЭлементы(Массив) ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс < ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 < ВсегоЭлементов Цикл Если Массив[Индекс2] = Массив[ТекущийИндекс] Тогда Массив.Удалить(Индекс2); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1; КонецЦикла; КонецПроцедуры

Как скопировать массив?

Функция СкопироватьМассив(ИсходныйМассив) МассивКопия = Новый Массив; Для Каждого Элемент Из ИсходныйМассив Цикл МассивКопия.Добавить(Элемент); КонецЦикла; Возврат МассивКопия; КонецФункции

Как проверить, что два массива идентичны?

Функция ПроверитьИдентичностьМассивов(ПервыйМассив, ВторойМассив) НаибольшийИндекс = ПервыйМассив.ВГраница(); Если НаибольшийИндекс > ВторойМассив.ВГраница () Тогда Возврат Ложь; КонецЕсли; Для Счетчик = 0 По НаибольшийИндекс Цикл Если ПервыйМассив[Счетчик] <> ВторойМассив[Счетчик] Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции

В массив выгружены данные, содержащие наименования контрагентов. Как их отсортировать?

СписокЗначений = Новый СписокЗначений; СписокЗначений.ЗагрузитьЗначения(МассивНаименований); СписокЗначений.СортироватьПоЗначению(); МассивНаименований = СписокЗначений.ВыгрузитьЗначения(); СписокЗначений.СортироватьПоЗначению(НаправлениеСортировки.Убыв);

Есть массив, в который выгружены значения типа СправочникСсылка.Номенклатура. Как удалить все пустые значения массива?

Процедура УдалитьПустыеЭлементы(МассивНоменклатуры) Счетчик = 0; КоличествоЭлементов = МассивНоменклатуры.Количество(); Пока Счетчик < КоличествоЭлементов Цикл Если МассивНоменклатуры [Счетчик].Пустая() Тогда МассивНоменклатуры.Удалить(Счетчик); КоличествоЭлементов = КоличествоЭлементов - 1; Иначе Счетчик = Счетчик + 1; КонецЕсли; КонецЦикла; КонецПроцедуры

Как получить массив номенклатурных позиций, использованных в табличных частях "Номенклатура" и "Тара" накладной?

МассивНоменклатуры = СсылкаНаДокумент.Номенклатура.ВыгрузитьКолонку("Номенклатура"); МассивНоменклатурыТара = СсылкаНаДокумент.ВозвратнаяТара.ВыгрузитьКолонку("Номенклатура"); Для Каждого ЭлементМассиваТара Из МассивНоменклатурыТара Цикл МассивНоменклатуры.Добавить(ЭлементМассиваТара); КонецЦикла;

Есть две таблицы значений. Как получить массив совпадающих имен колонок?

МассивСовпадающихКолонок = Новый Массив(); Для Каждого Колонка Из ТаблицаПриемник.Колонки Цикл ИмяКолонкиПриемника = Колонка.Имя; Если ТаблицаИсточник.Колонки.Найти(ИмяКолонкиПриемника) <> Неопределено Тогда МассивСовпадающихКолонок.Добавить(ИмяКолонкиПриемника); КонецЕсли; КонецЦикла;

Как в запросе сделать отбор по нескольким вариантам заполнения реквизита типа "ПеречислениеСсылка"?

Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ОтпускаОрганизацииРаботникиОрганизации.ФизЛицо, | ОтпускаОрганизацииРаботникиОрганизации.ДатаНачала, | ОтпускаОрганизацииРаботникиОрганизации.ДатаОкончания |ИЗ | Документ.ОтпускаОрганизации.РаботникиОрганизации КАК ОтпускаОрганизацииРаботникиОрганизации |ГДЕ | ОтпускаОрганизацииРаботникиОрганизации.ПричинаОтсутствия В (&МассивПричин)"; МассивПричин = Новый Массив; МассивПричин.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохранени яЗарплаты); МассивПричин.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный); Запрос.УстановитьПараметр("МассивПричин", МассивПричин);

Как из регистра сведений "РасчетчикиЗарплатыОрганизации" получить в виде массива всех расчетчиков зарплаты определенного подразделения организации?

Функция ПолучитьМассивРасчетчиков(Подразделение) НаборЗаписей = РегистрыСведений.РасчетчикиЗарплатыОрганизации.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ПодразделениеОрганизации.Установить(Подразделение); НаборЗаписей.Прочитать(); МассивРасчетчиков = НаборЗаписей.ВыгрузитьКолонку("Пользователь"); Возврат МассивРасчетчиков; КонецФункции
Функция ПолучитьМассивРасчетчиков(Подразделение) Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РасчетчикиЗарплатыОрганизации.Пользователь КАК Расчетчик |ИЗ | РегистрСведений.РасчетчикиЗарплатыОрганизации КАК РасчетчикиЗарплатыОрганизации |ГДЕ | РасчетчикиЗарплатыОрганизации.ПодразделениеОрганизации = &Подразделение"; Запрос.УстановитьПараметр("Подразделение", Подразделение); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); МассивРасчетчиков = Новый Массив; Пока Выборка.Следующий() Цикл МассивРасчетчиков.Добавить(Выборка.Расчетчик); КонецЦикла; Возврат МассивРасчетчиков; КонецФункции

Структура

В каких ситуациях обычно используются объекты типа "Структура"?

Как создать структуру?

СозданнаяСтруктура = Новый Структура; Оппонент = Новый Структура ("Фамилия, Имя, Отчество, Возраст", "Иванов", "Иван", "Иванович", 7);

Как добавить элементы в структуру?

Оппонент = Новый Структура ("Фамилия, Имя, Отчество, Возраст", "Иванов", "Иван", "Иванович", 7); Оппонент.Вставить("Обращение", "Господин"); Оппонент.Вставить("Возраст", 25);

Как обратиться к элементу структуры?

ТекущийВозраст = Оппонет.Возраст; КлючСтруктуры = "Возраст"; ТекущийВозраст = Оппонет[КлючСтруктуры]; ТекущийВозраст = Неопределено; Оппонет.Свойство("Возраст", ТекущийВозраст); Оппонет.Возраст = 32; Оппонет["Возраст"] = 32; Оппонент.Вставить("Возраст", 32);

Как перебрать элементы структуры?

Для Каждого Элемент из СтруктураПараметров Цикл Сообщить(Элемент.Ключ + ": " + Элемент.Значение); КонецЦикла;

Как удалить элемент структуры?

СтруктураПараметров.Удалить("Номенклатура"); СтруктураПараметров. Очистить();

Как в структуре установить значение для элемента с определенным ключом?

Структура = Новый Структура; // Добавить новый элемент. Структура.Вставить("Цвет", WebЦвета.Белый); // Установить значение для элемента с ключом "Цвет". Структура.Вставить("Цвет", WebЦвета.Синий);

Как получить в структуру многомерные данные? Как собрать информацию по установленным в форме журнала отборам?

СтруктураОтборов = Новый Структура; СтруктураПараметровОтбора = Новый Структура; Для Каждого ЭлементОтбора из ЖурналДокументовСписок.Отбор Цикл Если ЭлементОтбора.Использование Тогда СтруктураПараметровОтбора.Очистить(); СтруктураПараметровОтбора.Вставить("Имя", ЭлементОтбора.Имя); СтруктураПараметровОтбора.Вставить("ВидСравнения", ЭлементОтбора.ВидСравнения); СтруктураПараметровОтбора.Вставить("Значение", ЭлементОтбора.Значение); СтруктураПараметровОтбора.Вставить("ЗначениеПо", ЭлементОтбора.ЗначениеПо); СтруктураПараметровОтбора.Вставить("ЗначениеС", ЭлементОтбора.ЗначениеС); СтруктураПараметровОтбора.Вставить("Представление", ЭлементОтбора.Представление); СтруктураПараметровОтбора.Вставить("ПутьКДанным", ЭлементОтбора.ПутьКДанным); СтруктураПараметровОтбора.Вставить("ТипЗначения", ЭлементОтбора.ТипЗначения); СтруктураОтборов.Вставить(ЭлементОтбора.Имя, СтруктураПараметровОтбора); КонецЕсли; КонецЦикла;

Как определить, есть ли в структуре элемент с ключом "Контрагент", и если есть, но содержит пустое значение справочника или Неопределено - удалить этот элемент?

Если Структура.Свойство("Контрагент", ЗначениеЭлемента) Тогда Если ЗначениеЭлемента = Неопределено ИЛИ ЗначениеЭлемента.Пустая() Тогда Структура.Удалить("Контрагент"); КонецЕсли; КонецЕсли; Структура.Контрагент Структура["Контрагент"]

Как из табличной части "Товары" документа получить все строки, где значение реквизита "Цена" равно нулю, а значение реквизита "СтавкаНДС" равно значению "НДС18" перечисления "СтавкиНДС"?

СтруктураДляПоиска = Новый Структура("Цена, СтавкаНДС", 0, Перечисления.СтавкиНДС.НДС18); МассивСтрок = Товары.НайтиСтроки(СтруктураДляПоиска);

Как получить данные о текущей учетной политике бухгалтерского учета организации из периодического регистра сведений на заданную дату?

// Подготовить отбор по измерению "Организация". СтруктураОтбора = Новый Структура("Организация", ЮрЛицо); // Получить данные, актуальные на указанную дату. СтруктураДанных = РегистрыСведений.УчетнаяПолитикаБухгалтерскийУчет.ПолучитьПоследнее(ДатаПолучения, СтруктураОтбора); // Прочитать данные из структуры данных. СпособОценкиМпзЮрЛица = СтруктураДанных.СпособОценкиМПЗ; ДиректКостингЮрЛица = СтруктураДанных.ДиректКостинг;

Как сформировать структуру названий реквизитов табличной части произвольного документа?

Функция СформироватьСтруктуруТабличнойЧастиДокумента(Документ, ИмяТабличнойЧасти) СтруктураТабличнойЧастиДокумента = Новый Структура; Для Каждого Реквизит из Документ.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты Цикл СтруктураТабличнойЧастиДокумента.Вставить(Реквизит.Имя, Реквизит.Имя); КонецЦикла; Возврат СтруктураТабличнойЧастиДокумента; КонецФункции

Как получить запросом данные табличной части документа, имея структуру названий реквизитов табличной части?

Функция СформироватьЗапросПоТабличнойЧасти(Документ, ИмяТабличнойЧасти, СтруктураПолей) Экспорт ПоляРеквизитов = ""; Для Каждого Реквизит Из СтруктураПолей Цикл ПоляРеквизитов = ПоляРеквизитов + ", Док." + Реквизит.Значение + ?(ЗначениеНеЗаполнено(Реквизит.Ключ), "", " КАК " + СокрЛП(Реквизит.Ключ)); КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Док.НомерСтроки " + ПоляРеквизитов + " |ИЗ | Документ." + Документ.Метаданные().Имя + "." + СокрЛП(ИмяТабличнойЧасти) + " КАК Док |ГДЕ | Док.Ссылка = &ДокументСсылка"; // Установить параметры запроса. Запрос.УстановитьПараметр("ДокументСсылка", Документ.Ссылка); Возврат Запрос.Выполнить(); КонецФункции

Соответствие

В каких ситуациях обычно используются объекты типа "Соответствие"?

Как создать соответствие?

СозданноеСоответствие = Новый Соответствие();

Как добавить элементы в соответствие?

ВозрастСотрудников.Вставить(Сотрудник, ВозрастСотрудника); ВозрастСотрудников [Сотрудник] = ВозрастСотрудника;

Как обратиться к элементу соответствия?

ВозрастСотрудника = ВозрастСотрудников.Получить(Сотрудник); ВозрастСотрудника = ВозрастСотрудников [Сотрудник];

Как перебрать элементы соответствия?

Для Каждого Элемент из Замены Цикл Сообщить(Элемент.Ключ + " - " + Элемент.Значение); КонецЦикла;

Как удалить элемент соответствия?

Замены.Удалить(УдаляемыйТовар); Замены. Очистить();

Как получить данные из соответствия?

Значение = КурсыВалютДокумента.Получить(УправленческаяВалюта); Если Значение = Неопределено Тогда Сообщить("Данная валюта в соответствии отсутствует"); Иначе Курс = Значение["Курс"]; Кратность = Значение["Кратность"]; КонецЕсли;

Как получить многоуровневое соответствие видов расчетов, обладающих базовыми видами расчетов?

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.Ссылка КАК Ссылка, | ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.ВидРасчета, | ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.ВидРасчета.Наименование, | ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.Предопределенный |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизации.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацииБазовыеВидыРасчета |ИТОГИ ПО | Ссылка"; Результат = Запрос.Выполнить(); ВыборкаВидовРасчета = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВидыРасчета = Новый Соответствие; БазовыеВидаРасчета = Новый Соответствие; СвойстваВидаРасчета = Новый Структура("Наименование, Предопределенный"); // Цикл по видам расчета, обладающим базовыми. Пока ВыборкаВидовРасчета.Следующий() Цикл БазовыеВидаРасчета.Очистить(); ВыборкаБазовых = ВыборкаВидовРасчета.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Цикл по базовым видам расчета. Пока ВыборкаБазовых.Следующий() Цикл // Заполненить значения структуры "СвойстваВидаРасчета". СвойстваВидаРасчета.Наименование = ВыборкаБазовых.Наименование; СвойстваВидаРасчета.Предопределенный = ВыборкаБазовых.Предопределенный; // Заполненить соответствие "БазовыеВидАРасчета". БазовыеВидаРасчета.Вставить(ВыборкаБазовых.ВидРасчета, СвойстваВидаРасчета); КонецЦикла; // Заполнить соответствие "ВидыРасчета". ВидыРасчета.Вставить(ВыборкаВидовРасчета.Ссылка, БазовыеВидаРасчета); КонецЦикла;

Список значений, таблица значений, дерево значений

В каких ситуациях обычно используются списки значений, таблицы значений, дерево значений?

Как создать список значений?

СозданныйСписок = Новый СписокЗначений;

Как добавить элементы в список значений?

СписокСотрудников.Добавить(ТекущийСотрудник, ТекущийСотрудник.ФИО, , Фото); СписокСотрудников.Вставить(Инд, ТекущийСотрудник, ТекущийСотрудник.ФИО, , Фото);

Как найти элемент списка значений?

ЭлементСписка = СписокСотрудников.НайтиПоЗначению(ИскомыйСотрудник); Если ЭлементСписка <> Неопределено Тогда Сообщить(СписокСотрудников.Индекс(ЭлементСписка)); КонецЕсли;

Как обратиться к элементу списка значений?

ЭлементСписка = СписокСотрудников[Инд]; ЭлементСписка = СписокСотрудников.Получить(Инд); Сотрудник = ЭлементСписка.Значение; Представление = ЭлементСписка.Представление; Пометка = ЭлементСписка.Пометка; Картинка = ЭлементСписка.Картинка;

Как перебрать элементы списка значений?

Для Каждого ЭлементСписка Из СписокСотрудников Цикл Сообщить(ЭлементСписка.Значение); КонецЦикла;
СтаршийИндекс = СписокСотрудников.Количество() - 1; Для Сч = 0 по СтаршийИндекс Цикл Сообщить(СписокСотрудников[Сч].Значение); КонецЦикла;

Как удалить элемент списка значений?

СписокСотрудников.Удалить(0);
Индекс = СписокОбъектов.Количество() - 1; Пока Индекс >= 0 Цикл Если ТипЗнч(СписокОбъектов[Индекс].Значение) = Тип("Число") Тогда СписокОбъектов.Удалить(Индекс); КонецЕсли; Индекс = Индекс - 1; КонецЦикла;

Как создать таблицу значений и заполнить ее поля?

ТаблицаЗначений = Новый ТаблицаЗначений; // Создать нужные колонки. ТаблицаЗначений.Колонки.Добавить("Фамилия"); ТаблицаЗначений.Колонки.Добавить("Возраст"); // Добавить новую строку и задать значения в колонках таблицы. НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока.Фамилия = "Иванов"; НоваяСтрока.Возраст = 23; // Добавить новую строку и задать значения в колонках таблицы. НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока["Фамилия"] = "Иванов"; НоваяСтрока["Возраст"] = 23;

Как найти значение в таблице значений?

НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение); НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение, "Поставщик, Покупатель"); // Сформировать структуру отбора. СтруктураПоиска = Структура("Сотрудник", ИскомоеЗначение); // Найти строки. МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска);

Как перебрать строки таблицы значений?

Для Каждого ТекущаяСтрока Из ТаблицаСотрудников Цикл Сообщить(ТекущаяСтрока.Сотрудник); КонецЦикла; СтаршийИндекс = ТаблицаСотрудников.Количество() - 1; Для Сч = 0 по СтаршийИндекс Цикл Сообщить(СписокСотрудников[Сч].Сотрудник); КонецЦикла;

Как удалить строки (колонки) таблицы значений?

ТаблицаЗначений.Удалить(УдаляемаяСтрока); ТаблицаЗначений.Удалить(0); ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка); ТаблицаЗначений.Колонки.Удалить(0); СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() - 1; Индекс = ТаблицаЗначений.Количество() - 1; Пока Индекс > = 0 Цикл Для Сч = 0 По СтаршийИндексКолонок Цикл Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип("Число") Тогда ТаблицаЗначений.Удалить(Индекс); Прервать; КонецЕсли; КонецЦикла; Индекс = Индекс - 1; КонецЦикла;

Как заполнить таблицу значений, если имена колонок содержатся в переменных?

НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока[ИмяКолонки] = Значение;

Как заполнить всю колонку таблицы значений нужным значением?

ТаблицаЗначений.ЗаполнитьЗначения(Ложь, "ФлагФискальногоУчета");

Как таблицу значений "ТаблицаПолучатель" заполнить данными таблицы значений "ИсходнаяТаблица"?

ТаблицаПолучатель = ТаблицаИсходная.Скопировать();
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл НоваяСтрока = ТаблицаПолучатель.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы); КонецЦикла;
ОдноименныеКолонки = Новый Массив(); Для Каждого Колонка Из ИсходнаяТаблица.Колонки Цикл СовпадающаяКолонка = ТаблицаПолучатель.Колонки.Найти(Колонка.Имя); Если СовпадающаяКолонка <> Неопределено Тогда // Получить свойства колонки. Индекс = ТаблицаПолучатель.Колонки.Индекс(СовпадающаяКолонка); Имя = Колонка.Имя; ТипЗначения = Колонка.ТипЗначения; Заголовок = Колонка.Заголовок; Ширина = Колонка.Ширина; // Заменить колонки в таблице-получаетеле. ТаблицаПолучатель.Колонки.Удалить(Индекс); ТаблицаПолучатель.Колонки.Вставить(Индекс, Имя, ТипЗначения, Заголовок, Ширина); // Добавить очередное имя совпадающих колонок в массив. ОдноименныеКолонки.Добавить(Колонка.Имя); КонецЕсли; КонецЦикла; // Цикл перебора строк исходной таблицы. Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл // Добавить новую строку в таблицу-получатель. НоваяСтрока = ТаблицаПолучатель.Добавить(); // Заполнить значения в совпадающих ячейках. Для Каждого ИмяКолонки Из ОдноименныеКолонки Цикл НоваяСтрока[ИмяКолонки] = СтрокаИсходнойТаблицы[ИмяКолонки]; КонецЦикла; КонецЦикла;

Как добавить колонки к таблице значений "ТаблицаЗначений" с ограничениями по типу?

 // Добавить колонку без ограничений по типу. ТаблицаЗначений.Колонки.Добавить("Объект");
// Ограничения по типам данных колонки: // Только элементы справочника "Контрагенты". ТаблицаЗначений.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
// Подготовка и установка ограничений для данных типа Строка. КвалификаторыСтроки = Новый КвалификаторыСтроки(20, ДопустимаяДлина.Переменная); ДопустимыеТипы = Новый ОписаниеТипов("Строка", , КвалификаторыСтроки); ТаблицаЗначений.Колонки.Добавить("ПримечаниеСтроковоеКороткое", ДопустимыеТипы);
// Расширение уже использованного ранее описания типов. КвалификаторыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный); КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата); РасширенныеДопустимыеТипы = Новый ОписаниеТипов(ДопустимыеТипы, "Число, Дата", , КвалификаторыЧисла, , КвалификаторыДаты); ТаблицаЗначений.Колонки.Добавить("Примечание", РасширенныеДопустимыеТипы);

Как изменить тип значения колонки таблицы значений, полученной выгрузкой из запроса?

// Создать пустые ссылки. ПустоеОприходование = Документы.ОприходованиеТоваров.ПустаяСсылка(); ПустойВозврат = Документы.ВозвратТоваровОтПокупателя.ПустаяСсылка(); // Выполнить запрос. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеТоваровУслуг | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ ПЕРВЫЕ 0 | &ПустойДокументОприходование | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ ПЕРВЫЕ 0 | &ПустойДокументВозврат |"; Запрос.УстановитьПараметр("ПустойДокументОприходование", ПустоеОприходование); Запрос.УстановитьПараметр("ПустойДокументВозврат", ПустойВозврат); // Выгрузить в таблицу значений. ТаблицаСсылок = Запрос.Выполнить().Выгрузить();

Как самостоятельно заполнить дерево значений?

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

Прикладные объекты

Справочники

Как создать элемент (группу) справочника?

НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент(); НовыйЭлемент.Наименование = "военный билет"; // Установить другие реквизиты. НовыйЭлемент.Записать(); 
НовыйЭлемент = Справочники.Банки.СоздатьЭлемент(); // Получить ссылку на группу, в которой будет находиться новый элемент. Родитель = Справочники.Банки.НайтиПоКоду("000000001"); НовыйЭлемент.Наименование = "АКБ"; НовыйЭлемент.Код = "000000011"; НовыйЭлемент.Родитель = Родитель; // Установить другие реквизиты. НовыйЭлемент.Записать();
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); // Получить ссылку на группу, в которой должна находиться создаваемая группа. Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Обувь", Истина); НоваяГруппа.Наименование = "Модельная обувь"; НоваяГруппа.Родитель = Родитель; // Установить другие реквизиты. НоваяГруппа.Записать();
// Создать новый элемент в корне справочника. НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = "IT отдел"; НовыйЭлемент.Записать(); // Получить ссылку на родителя добавляемых элементов. Родитель = НовыйЭлемент.Ссылка; // Создать дочерний элемент. НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Группа разработки"; НовыйЭлемент.Родитель = Родитель; НовыйЭлемент.Записать();

Как найти элемент справочника?

РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду("00030"); Если РезультатПоиска.Пустая() Тогда // Выполнить действия, предусмотренные в случае, когда элемент не найден. КонецЕсли;
РезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию("Кроссовки");
РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "К-120002");

Как удалить элемент справочника?

 // Найти ссылки на удаляемый элемент. МассивСсылок = Новый Массив; МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент); НайденныеСсылки = НайтиПоСсылкам(МассивСсылок); Если НайденныеСсылки.Количество() > 0 Тогда Сообщить("Нельзя удалять элемент, на него имеются ссылки"); Иначе УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект(); УдаляемыйЭлемент.Удалить(); КонецЕсли; 
УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);

Как перебрать элементы справочника?

Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; // Обращение к другим данным справочника. КонецЦикла;
Запрос = Новый Запрос(" |ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;

Как выбрать все элементы из определенной группы?

Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; 
Запрос = Новый Запрос(" |ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель = &Родитель |АВТОУПОРЯДОЧИВАНИЕ"); Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;
Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; Запрос = Новый Запрос(" |ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель В ИЕРАРХИИ(&Родитель) |АВТОУПОРЯДОЧИВАНИЕ"); Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;

Как перебрать элементы подчиненного справочника с помощью запроса?

Процедура ПереборПодчиненыхЭлементов(Контрагент) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛица.Ссылка |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Контрагент); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры

Как перебрать элементы подчиненного справочника с помощью выборки справочника?

Процедура ПереборПодчиненыхЭлементов(Контрагент) // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры

Как открыть форму списка (элемента) справочника?

Форма = Справочники.Номенклатура.ПолучитьФормуСписка(); Форма.Открыть();
Форма = Справочники.ХранилищеДополнительнойИнформации.ПолучитьФорму("ФормаСпискаФайловИИзобр ажений"); Форма.Открыть();
Элемент = Справочники.Номенклатура.НайтиПоКоду("00030"); Форма = Элемент.ПолучитьФорму(); Форма.Открыть();

Как добавить запись в табличную часть элемента справочника?

ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект(); НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить(); // Заполнить реквизиты. НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности; ЭлементОбъект.Записать();

Как удалить строки из табличной части справочника?

ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006"); ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект(); ОбъектСправочника.ВидыДеятельности.Очистить(); ОбъектСправочника.Записать();

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    7448    Abysswalker    11    

48

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    12658    DeerCven    15    

64

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    65448    dimanich70    87    

177

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    8699    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    82102    atdonya    31    

75

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    12638    ke.92@mail.ru    18    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. NoMax 233 16.03.09 14:12 Сейчас в теме
(0) уважаемый а можно сжать в файл? а то у меня походу не все выводит.
На "Как отобразить на географической схеме выбранный город?" обрезает и дальше "молоко".

2. begemot 270 16.03.09 14:16 Сейчас в теме
Так это же "А.П. Габец, Д.И. Гончаров
1С:Предприятие 8.0 Простые примеры разработки"
http://ifolder.ru/7909799
Somebody1; u_n_k_n_o_w_n; klinval; jobkostya1c_ERP; Shomak; bashirov.rs; dutlovva; axell; Hany; Bukaska; ms33; Ivanich1987; +12 Ответить
3. Minotavrik 1650 17.03.09 06:25 Сейчас в теме
там многое из др. источников.
4. oleg974 123 18.03.09 07:30 Сейчас в теме
Вот блин у меня тоже не все выводит. Поддерживаю просьбу NoMax о создании файла. А то, что в начале - это простые примеры разработки
5. alyona.iva@gmail.com 19.03.09 16:13 Сейчас в теме
Да, да -- я тоже за файл. Мелкий текст получатся -- глазки начинают болеть быстро(((
21. mtv:) 1028 05.01.12 17:44 Сейчас в теме
(5) Смотри версию для печати - там всё хорошо читается.
6. sytkosa 119 25.03.09 11:24 Сейчас в теме
Автору надо все это "добро" сложить в откомпилированный chm или html и тогда будет однозначно большой ПЛЮС
7. kosb_64 16.04.09 16:32 Сейчас в теме
Согласен с предыдущими комментариями!
8. dobrynin.i.s 94 08.11.09 09:53 Сейчас в теме
тут http://infostart.ru/public/60366/ этот хелп в формате файла шаблонов.
9. pavel_pss 291 12.01.10 13:53 Сейчас в теме
Спасибо, на всякий случай полезно
10. Dillan 12.02.10 08:40 Сейчас в теме
Спасибо, пригодится
11. xxx6662000 26.05.10 08:51 Сейчас в теме
Посмотрел листинг и мне показался смутно знакомым, и нашел аналогичное 1:1 в книге "Ганчаров Грабеч. 1С Предприятие 8.1 Простые примеры разработки". Такого явного плагиата я не встречал очень давно.
12. vip 26.05.10 09:02 Сейчас в теме
13. Збянтэжаны Саўка 245 09.06.10 15:06 Сейчас в теме
(11) из 8.1 ничего не нашел, спецом искал темы про временные таблицы - глухо, по ходу это из 8.0.

(12) других источников что-то тоже увы в упор не вижу в этой огромной свалке от Габеца для 8.0.
14. KukA.5 476 26.07.10 12:16 Сейчас в теме
(11) согласен это ПОЛЕЗНЫЙ МАТЕРИАЛ, но ...из хорошей книги.
Плюс ставлю - рекомендую всем этот объективно полезный материал.
Автору рекомендую в самом начале написать благодарности Габцу и Гончарову.
serg1974; bashirov.rs; shashev_j_v; +3 Ответить
15. powar 12 11.08.10 13:28 Сейчас в теме
Название скромное больно. Это скорее "Пособие юного програмиста".
16. ixijixi 2159 15.11.10 14:28 Сейчас в теме
Спасибо! Буду осваивать)
17. Serg_KSV 77 26.04.11 21:45 Сейчас в теме
Как создать новый документ?

НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();

ФормаНовогоПКО = Документы.ПриходныйКассовыйОрдер.ПолучитьФормуНовогоДокумента();
ФормаНовогоПКО.Открыть();

Пропарился часа два пока понял в чем фишка. Косяк предложенного механизма в том, что реально создаются 2 новых документа.
СоздатьДокумент() создает документ, в который записывается НовыйДокумент.Дата = ТекущаяДата();
ПолучитьФормуНовогоДокумента() тоже создает документ, очень неудачно подобран пример с датой, дата нового документа всегда ТекущаяДата().
Если будет заполнение другого реквизита, например,
НовыйДокумент.СтатьДвижения = Командировочные;
То в открываемом документе ФормаНовогоПКО.Открыть(); СтатьДвижения заполнена не будет.

Правильно делать так:

НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
ФормаНовогоПКО = НовыйДокумент.ПолучитьФорму();
ФормаНовогоПКО.Открыть();

И если это плагиат, то качество источника оставляет желать лучшего.
18. makeya 13.10.11 16:14 Сейчас в теме
Очень полезные "полезности"! хоть и столь знакомые по книжке.
19. Igortid 169 15.10.11 18:06 Сейчас в теме
хорошая подборка, спасибо
20. пользователь 13.11.11 19:44
Сообщение было скрыто модератором.
...
22. voyger_men 05.01.12 19:48 Сейчас в теме
Спасибо большое, уже полгода не могу нормально с 1с разобраться, то времени нет то меня... теперь немного проще с этим!!!
23. hohmankia 25.01.12 00:22 Сейчас в теме
Отличная подборка, спасибо большое!
24. Lizi60 25.01.12 15:11 Сейчас в теме
Материал, несомненно, очень полезный.
25. zverek2 15.02.12 13:50 Сейчас в теме
Спасибо, материал полезный, иногда приходится пользоваться подобными разработками, только пока приходилось их самому придумывать и воплощать, а теперь можно уже разработанное взять и не терять время на реализацию своего. Автору огромное спасибо!
26. KresteG 04.03.12 22:18 Сейчас в теме
27. bolush 12.03.12 14:51 Сейчас в теме
Классно, очень хорошо помогает для начинающих программистов, программирую уже 7 мес, все это время только сюда заходил:))
28. yartkin 29.10.12 16:36 Сейчас в теме
Спасибо за подборку =)
29. u_n_k_n_o_w_n 35 08.11.12 18:25 Сейчас в теме
Плагиат!!!
Автору "-", но не могу пока к сожалению.
32. Bukaska 158 24.12.12 21:39 Сейчас в теме
(29) u_n_k_n_o_w_n,
В коей степени с вами согласна, но...Но не у всех есть возможность заказать большую книгу почти за 3000 по розничной цене))))
33. u_n_k_n_o_w_n 35 25.12.12 03:14 Сейчас в теме
(32) Bukaska, давайте уточним цену: 350 руб.
Плю ко всему Вы получаете диск с данными где все это есть в электронном виде.
34. Bukaska 158 25.12.12 14:29 Сейчас в теме
(33) u_n_k_n_o_w_n,
http://v8.1c.ru/metod/books/book.jsp?id=401
Я про эту книгу поняла из темы)))
30. KillHunter 8 08.11.12 20:15 Сейчас в теме
прикольная штукенция, спасибо :)
31. DitriX 2117 24.12.12 21:11 Сейчас в теме
(0)Как привести строку типа "20.10.2012 12:03:40" к дате 1С

Судя из справки - надо вычленить отдельный составляющие и получить строку типа:
"20121020120940" и потом сделать Дата("20121020120940").

но можно и просто Дата("20.10.2012 12:03:40").
Я так понимаю тут зависит от региональных настроек и т.д. Но главное - что оно работает (на 8.2.16)
Я не знал, может кому поможет.
35. u_n_k_n_o_w_n 35 25.12.12 18:40 Сейчас в теме
Это уже набор "всю включено". Обязательно приобрету.
36. Alien_RS_Forever 434 05.02.13 16:59 Сейчас в теме
(0), (35) народ, "всё включено" на сайте help1c.com, а это плагиат какой-то.. минус не ставлю только потому, что автор потратил своё время на копи паст.. даже не позаботясь об оформлении статьи..
все, кто хочет изучить 1С - найдите книжки "Профессиональная разработка в 1С:Предприятии" первой и второй редакции и по ним учитесь.
MezhduProchim; v.l.; +2 Ответить
37. Gulak 13.06.13 10:21 Сейчас в теме
38. KillHunter 8 13.06.13 10:37 Сейчас в теме
неплохая статья, правда их уже немеренно на сайте однотипных!
39. Alekta 11.10.13 16:34 Сейчас в теме
Спасибо. В данной теме нашла то, что искала.
40. Рамзес 31 30.10.13 14:43 Сейчас в теме
В функции проверки массивов на идентичность:
Если НаибольшийИндекс > ВторойМассив.ВГраница () Тогда 
	Возврат Ложь; 
КонецЕсли; 

Мне думается, что правильнее
Если НаибольшийИндекс <> ВторойМассив.ВГраница () Тогда 
	Возврат Ложь; 
КонецЕсли; 
41. mie24 2 12.01.14 21:58 Сейчас в теме
В вашей статье нашла ответ на свой вопрос. Спасибо.
42. serg1974 19.05.14 16:27 Сейчас в теме
нехватает очень следующего (авторство не мое)

Можно ли в запросе , в качестве источника данных, использовать таблицу значений ?
Да. Это можно сделать с помощью временных таблиц:


// Сначала помещаем ТЗ во временную таблицу
Запрос = Новый Запрос ;
Запрос .МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос .Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ";
Запрос .УстановитьПараметр("ТЗ", ТЗ);
Запрос .Выполнить();

// Теперь ТЗ можно использовать в запросе :

Запрос .Текст = "
|ВЫБРАТЬ
| ТЗ.Номенклатура,
| Остатки.КоличествоОстаток
|ИЗ
| ТЗ
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыНаСкладах.Остатки() КАК Остатки
| ПО
| ТЗ.Номенклатура=Остатки.Номенклатура";

Выборка = Запрос .Выполнить().Выбрать();

----------------------------еще момент !!!!---------------------------------------
Если ошибка: "Тип не может быть выбран в запросе" в 1С 8

При использовании в запросе таблицы значений, возникает ошибка: «Тип не может быть выбран в запросе». Почему?

Дело в том, что колонки таблицы значений, передаваемой в запрос в качестве источника данных, должны быть явно ТИПИЗИРОВАНЫ. Т.е. если мы используем таблицу значений, так же в свою очередь выгруженную из результата запроса или из табличной части документа например - то такой проблемы не возникает, т.к. в таком случае колонки будут типизированными. А если мы сами создаем таблицу значений, то нужно явно указать тип для каждой колонки:

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Cерый; +1 Ответить
43. serg1974 03.07.14 10:06 Сейчас в теме
Пользуюсь темой - как справочником - но еще одной полезной конструкции тут нет:
"Как открыть форму ссылки под курсором в форме списка" (регистр значений например)

Форма = этаформа.ТекущийЭлемент.ТекущиеДанные[этаформа.ТекущийЭлемент.ТекущаяКолонка.Имя].ПолучитьФорму();
Форма.Открыть();

Добавьте пожалуйста!

PS сегодня 1,5 часа искал - как это сделать :)
44. pavelyar 25.11.14 01:16 Сейчас в теме
Спасибо помогло !
45. grand.pers 25.11.14 12:55 Сейчас в теме
искал преобразование даты в строку - так и не нашел :(
46. ildarovich 8065 25.11.14 13:25 Сейчас в теме
(45) grand.pers, вот по этой ссылке http://www.forum.mista.ru/topic.php?id=388253 в комментарии 23 есть решение
Altair777; u_n_k_n_o_w_n; +2 Ответить
47. mukilka 28.11.14 17:30 Сейчас в теме
Спасибо, есть много полезных вещей
48. CratosX 116 21.09.15 12:23 Сейчас в теме
В связи с отказом от модальности, функция Предупреждение нежелательна
u_n_k_n_o_w_n; +1 Ответить
49. chmv 02.11.15 13:19 Сейчас в теме
48 А ЧТО надо использовать?
50. Джон Смит 04.12.15 14:45 Сейчас в теме
Полезная информация!
51. MPV 13.02.16 00:25 Сейчас в теме
Как таблицу значений "ТаблицаПолучатель" заполнить данными таблицы значений "ИсходнаяТаблица"?

Этот код не совсем верный
ТаблицаПолучатель = ТаблицаИсходная.Скопировать();
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл НоваяСтрока = ТаблицаПолучатель.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы); КонецЦикла;

Здесь нужно использовать просто
ТаблицаИсходная.Скопировать();

ИЛИ метод СкопироватьКолонки();
ТаблицаПолучатель = ТаблицаИсходная.СкопироватьКолонки();
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл НоваяСтрока = ТаблицаПолучатель.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы); КонецЦикла;
52. NazarovV 87 19.02.16 10:50 Сейчас в теме
в функции СформироватьЗапроспоТабличнойЧасти - ошибка :
так у вас: (ЗначениеНеЗаполнено(Реквизит.Ключ)
правильно:(Не ЗначениеЗаполнено(Реквизит.Ключ)...


p.s. спасибо за статью.
54. ak0710 167 01.12.16 11:43 Сейчас в теме
(52), Вадим в старой версии платформы была функция ЗначениеНеЗаполнено, наверное вы не сталкивались
53. chmv 04.08.16 11:17 Сейчас в теме
55. Altair777 649 07.07.17 12:09 Сейчас в теме
(0)
ДАТАВРЕМЯ(2005, 01, 01)
???
Вообще-то это Системные перечисления/Разные/ЧастиДаты/ДатаВремя
56. Altair777 649 07.07.17 12:30 Сейчас в теме
(0)
Товар = Справочники.Номенклатура.ПустаяСсылка();

а почему не?
Товар = Неопределено;

Особенно, для полей составного типа
57. Altair777 649 07.07.17 12:37 Сейчас в теме
(0)
СледующийДень = ТекущаяДата() + 60 * 60 * 24;

А тяжело посчитать на калькуляторе и просто написать 86400 ?
Кстати, а если 2 ння?
Функция ДобавитьДни(Дата, КоличествоДней) Экспорт
	//Назначение: Добавляет к дате определенное количество дней
	//Описание
	//	Возможны отрицательные значение - тогда не добавление, а вычитание
	Возврат Дата + КоличествоДней * 86400; //60*60*24
КонецФункции
58. zodus 75 15.02.18 21:56 Сейчас в теме
я себе давно делал тоже обработку с примерными модулями )
59. prime9 1096 06.03.20 07:29 Сейчас в теме
Хорошая подборочка :)
60. office2@cyberax.ru 29.06.21 12:38 Сейчас в теме
2021 год. Все еще иногда пользуюсь данной статьей )
Для отправки сообщения требуется регистрация/авторизация