Допиливаем форму выбора серий номенклатуры для отображения остатков

Публикация № 80439

Разработка - Практика программирования

В этой статье я хочу рассмотреть задачу, которая довольно часто возникает у начинающих (и не только) разработчиков, адаптирующих типовые конфигурации (УТ, КА, УПП) на предприятиях торговли. Речь пойдет про отображение остатков в форме выбора серий номенклатуры при подборе в документы. Это актуально в тех случаях, когда не ведется партионный учет по сериям, либо когда документы вводятся неоперативно и нет возможности воспользоваться волшебной кнопкой "Заполнить и провести". На первый взгляд задача банальна, но я хочу показать некоторые "грабли", на которые часто наступают новички  в процессе ее реализации, а также сопоставлю алгоритмы решения на платформе 8.1 и 8.2.

Не вполне серьезная статья о вполне реальной, но часто неверно решаемой задаче. (Новичкам рекомендуется).

Итак приступим: в качестве подопытной возьмем типовую конфигурацию УТ ред. 10.3. Предполагается, что конфигурация работает на платформе 8.2 и снята с поддержки (включена возможность изменения).

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ну вот, теперь можем приниматься за доработку формы списка...хотя стоп (!), возникает резонный вопрос: а зачем мы тогда ставили эту самую «галку» ? Согласен, мы не будем дорабатывать старую и толстую форму (смайл), а вместо этого создадим новую «тонкую» да к тому же еще и управляемую (хитрый смайл). Но прежде  я мысленно вернусь на несколько лет в прошлое и представлю, как бы все это выглядело имей мы дело со старушкой 8.1 Smile

Собственно, делов-то! Берем форму, добавляем на нее колонку Остаток, ну а получение и вывод на экран конечно же делаем в обработчике ПриВыводеСтроки()табличного поля. Примерно так:

Часто сталкиваюсь с таким кодом. В принципе он рабочий, но методически неверный. Во-первых неверно само размещение запроса на получение остатков в процедуре ПриВыводеСтроки(). Ведь в этом случае при выводе каждой строки будет идти обращение к базе данных и работать все это хозяйство будет неэффективно, в чем мы сможем убедиться, запустив базу в файловом режиме на слабеньком офисном ПК 2005 г.в. (кои встречаются достаточно часто). При большом количестве строк в списке - слайд-шоу гарантировано Smile. На эти грабли наступают многие новички не дошедшие пока в списке обработчиков до события ПриПолученииДанных(), а ведь оно как раз для этих целей и предназначено. Так ладно, с этим понятно, переделаем. Но ведь и  остатки мы получаем не верно: во первых общие по всем складам, а во-вторых на текущую дату. А на практике как правило складов используется несколько, да и документы могут проводится «задним числом». В этом случае ситуация усложняется. Придется каким-то образом передавать в открываемую форму данные по складу и дате остатков. В этом нам поможет обработчик поля ввода СерииНоменклатуры  НачалоВыбора(). Перво-наперво отрубаем СтандартнуюОбработку, присвоив ей значение Ложь. Дальше возможны варианты:

1)  ФормаВыбораСерий = Справочники.СерииНоменклатуры.ПолучитьФормуВыбора(,ЭтаФорма);

     ФормаВыбораСерий.ОткрытьМодально();

Вторым параметром здесь задается владелец формы, в качестве которого мы передаем саму форму документа, и тем самым переопределяем владельца  по-умолчанию, коим является непосредственно элемент поля выбора. Нам это естественно не подходит, ведь через него не получить данные  из «шапки» документа. А вот после переопределения - пожалуйста. Можно будет «докопаться» через владельца ко всем значениям его реквизитов. В принципе рабочий вариант, но как-то корявенько...

2) Более правильным представляется вариант с созданием реквизита (или экспортной переменной)  «СтруктураПараметров» (тип Структура) в форме выбора серий, и дальнейшей передачей значений в эту переменную в обработчике  НачалоВыбора(). В этом случае процедура примет вид:

Так, но это еще не все. Если теперь запустить программу в пользовательском режиме и попробовать выбрать серию, мы наступим на очередные «грабли». Когда мы отключили стандартную обработку, у нас потерялась связь серии с ее владельцем номенклатурой, поэтому сперва будет открываться форма выбора номенклатуры, а потом уже подчиненного справочника серий, что конечно же очень антигуманно по отношению к пользователям. Исправить ситуацию нам поможет такое замечательное свойство формы  (замечу только в толстом клиенте, в тонком все выглядит несколько иначе, об этом далее) как ПараметрВыборПоВладельцу, сюда нужно передать ссылку на номенклатуру владельца. Запускаем 1С:Предприятие, открываем документ реализации, нажимаем на педальку выбора серии и вуаля - очередные грабли!

Так, разбираемся...и натыкаемся еще на одно интересное свойство формы ПараметрОтборПоВладельцу. Эврика! Вот она где собака зарыта. Присваиваем ему значение нашей номенклатуры и теперь действительно все работает как надо. Конечно не все нюансы еще учтены. Например мы передаем в качестве параметра «ДатаОстатков» дату документа, но у нас на временной оси в пределах одной секунды может находится множество документов, поэтому правильнее было бы передавать МоментВремени документа, который можно получить используя одноименный метод. Вот как это должно выглядеть:

СтруктураПараметров.Вставить("ДатаОстатков",  МоментВремени());

Но и это еще не все! Laughing  Форма открывается с  отбором по владельцу, остатки показываются, но теперь перестала позиционироваться текущая строка, т.е. при открытии списка она все время находится на первой.

Для решения проблемы нужно в обработчике ПриОткрытии() теперь уже формы выбора серий присваивать свойству  ПараметрТекущаяСтрока значение нашей серии. Вот теперь после стольких мытарств все работает более и менее корректно.

 


 

В общем-то вся эта демагогия была присуща старой версии платформы, и мы сейчас посмотрим как это же самое делается в платформе 8.2 в управляемой форме (помните про галку? Cool ).

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

Итак приступим. Создаем новую форму выбора, тип указываем Управляемая, на следующей вкладке выбираем отображаемые реквизиты, жмякаем ОК - форма готова. А куда нам теперь сваять колонку с остатками? Куда ее добавлять? В элементы (это те, что слева) или в реквизиты (это те что справа)? Я так отвечу: никуда не нужно ничего добавлять, чуть позже она сама волшебным образом появиться на форме.

Попробуем для начала просто открыть форму и убедится, что штатно все работает. Открываем и ...упс, что за облом??? Открылась наша старая форма. В чем тут дело? А все дело в том, что основной режим у нашей конфигурации - Обычное приложение, а форма у нас установилась на закладке Дополнительные. Это значит, что она будет открываться только при запуске в режиме управляемого приложения. А как сделать, чтобы во всех режимах открывалась управляемая форма? Для этого нужно убрать из основных обычную форму выбора и установить управляемую.

 Рестартим 1С и убеждаемся, что теперь все работатет.

ОК, сделали. Но где теперь искать событие «ПриПолученииДанных», в котором мы будем получать наши остатки? Спешу вас обрадовать, в платфторме 8.2 все делается намного проще, а все благодаря новому замечательному объекту «ДинамическийСписок» и  он-то  у нас является основным реквизитом формы. А это значит, что мы имеем полное на то право воспользоваться одной из его фишек, а именно указанием произвольного запроса. Для этого в свойствах реквизита Список (открывается через палитру свойств) ставим одноименную галку.

Теперь нажимаем на гиперссылку Открыть и видим....минуточку, где-то я это уже видел! Ах да, это та самая СКД, которая в 8.1 использовалась для построения отчетов. А вот в 8.2 на ней построены практически все списки справочников, документов и т.д. Подробно описывать свойства динамического списка я не буду, т.к. это уже выходит за пределы нашего повествования. Для нас сейчас имеет значение лишь возможность указания произвольного запроса, чем мы собственно и займемся!

Итак, у нас открылось вот такое окошко.

 

Нажимаем кнопку конструктор и конструируем наш запрос . Все поля  что были оставляем и добавляем левое соединение к ВТ таблице регистра ТоварыНаСкладахОстатки. Вот так может выглядеть текст запроса.

Сохраняем запрос и закрываем форму редактирования динамического списка. Так, что-то на форме пока не наблюдается никаких изменений, колонки как не было, так и нет. А вот и не правда Wink Она появилась в качестве реквизитов самого списка и теперь нам всего-навсего осталось перетащить ее в поле элементов списка. Вот что должно получиться в результате:

Ну вот, список готов, запрос ждет своего исполнения и все бы хорошо, но теперь не понятно, откуда платформа будет получать значения параметров в ВТ остатков? Видимо должен быть какой-то интерфейс для их передачи в запрос динамического списка. И он действительно есть, а выглядит это очень похоже на установку параметров стандартного запроса:

Список.Параметры.УстановитьЗначениеПараметра(«ИмяПараметра», ЗначениеПараметра);

Ну а дальше скорее всего остается также как и было на 8.1. Создаем структуру, затем передаем ее в реквизит (или параметр?...а может экспортную переменную?), все...алес, приплыли. Эх была ни была, сделаю как в 8.1 (здесь я специально утрирую, чтобы показать реальную ситутацию, а она к сожалению такова, что до сих пор многие работают методом тыка, не особо заботясь о корректности выбранного решения, реботает?...ну и ладно! ). Так бррр..., о чем это я? Ах да, создаем реквизит СтруктураПараметров и передаем ее также из обработчика НачалоВыбора() из документа.

Итак как передавать параметры решили, но как их получать в форме выбора серий? Точнее не как, а где именно? Первое, что приходит в голову - в процедуре ПриОткрытии(). Но это опять же неправильное решение. И вот почему. В платформе 8.2 управляемая форма существует одновременно на сервере и на клиенте, находясь при этом в разных контекстах. Обращение к базе данных возможно только из серверного контекста. Поэтому форма сперва создается на сервере, «приезжает» на клиента и только потом уже в клиентском контексте срабатывает обработчик ПриОткрытии(), который в нашем случае снова будет обращаться к серверу за данными. Таким образом правильно получать и устанавливать параметры запроса в процедуре ПриСозданииНаСервере().

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

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

Как видим, тут же мы и устанавливаем параметр ТекущаяСтрока, чтобы правильно происходило позиционирование в списке. И открытие формы теперь происходит совсем по другому - с использованием процедуры ОткрытьФорму() (модально - частный случай), где вторым параметром мы и передаем нашу структуру.

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

И вот так выглядит конечный текст запроса:

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

 

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. mtv:) 1007 25.09.11 08:36 Сейчас в теме
Статья, безусловно, полезная.
Но очень неудобно то, что код вставлен картинками, а не текстом. Невозможно перенести код простым копированием. Приходится набивать вручную… :( . Это портит общее впечатление от публикации.
Хотя все равно плюс.
Alex_will; +1 Ответить
2. practik1c 423 29.09.11 00:41 Сейчас в теме
Собственно сделал картинками потому что форматирование кода жутко неудобное да и раскраска не та :)
Но плюсы тоже есть, когда не копипастишь, а набираешь сам - усваяемость сильно лучше! ;)
3. starkv 15.10.11 15:49 Сейчас в теме
Может я что-то и не то сделал, но кажется есть ошибочка, не происходит выбор серии
из-за (Стандартная обработка = ложь)
Я сделал так:

ВыбраннаяСерия = ОткрытьФормуМодально("Справочник.СерииНоменклатуры.ФормаВыбора",СтруктураПараметров);

Если ТипЗнч(ВыбраннаяСерия) = Тип("СправочникСсылка.Серииноменклатуры")Тогда
ТекущиеДанные.СерияНоменклатуры = ВыбраннаяСерия;
КонецЕсли;
1CSoft; ПодводныйТ; zhurba; +3 Ответить
4. Sintson 362 19.11.11 22:01 Сейчас в теме
мАлАдец, тильки как с извечным вопросом обновления совладать, но это, как говориться ничего личного, больше к 1С вопрос, а так, тема здравая, я так же делал.
5. Dwiss 159 22.12.11 17:54 Сейчас в теме
Помоему здесь ошибочка
ДатаОстатков = <<?>>мТекущяДата(); (Проверка: Толстый клиент (обычное приложение))
ТекущаяДата() работать не будет нужно использовать
ТекущаяУниверсальнаяДата()
Синтаксических ошибок не обнаружено!
6. Hans 1 08.01.12 17:25 Сейчас в теме
Желательно бы то же самое только для табличной части документа под управляемые формы.
7. nav1971 25 11.01.12 19:21 Сейчас в теме
а куда делась статья? виднго только описание!
9. babylon_5 55 15.01.12 14:12 Сейчас в теме
(7) Открой не в IE, а в другом браузере.
8. smilejka 31 13.01.12 09:36 Сейчас в теме
Как раз сегодня планировал заниматься такой задачей. Только мне необходимо реализовать в форме подбора номенклатуры.
Статья интересная +
10. Sergeant82 01.07.12 16:27 Сейчас в теме
Огромное спасибо за публикацию! Очень выручила. Но у меня была не ТЧ, а просто Поле выбора на форме, и заработало только после добавления ", Элемент" в строке:
ОткрытьФормуМодально("Справочник.СерииНоменклатуры.ФормаВыбора",СтруктураПараметров, Элемент)
11. roma03v1 22.08.12 20:29 Сейчас в теме
Спасибо большое очень помогло, так как пока плохо программирую, очень сильно сэкономил мне время.
12. Astrakhan_man 29.10.12 12:36 Сейчас в теме
Можно вопрос, как Вы передаете дополнительные параметры (склад) в форму выбора? но я на обычных формах.
13. Astrakhan_man 29.10.12 23:36 Сейчас в теме
я создаю реквизит формы "СтруктураПараметров" с типов Произвольный (не понял как создать с типом структура), передаю в него данные
(ВыбраннаяСерия = ОткрытьФормуМодально("Справочник.СерииНоменклатуры.ФормаВыбора",СтруктураПараметров);)
, но в процедуре в "СправочникСписокПриПолученииДанных" пишет "Поле объекта не обнаружено (Склад)" где у меня ошибка.
14. Astrakhan_man 30.10.12 18:31 Сейчас в теме
переделал на управляемые формы, и при открытие пишет такую ошибку "по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(16, 5)}: Не задано значение параметра "Дата"
<<?>>&Дата,
"

в параметрах формы(у списка) я её задал. из формы передаю.
15. katavyjob 03.07.14 14:03 Сейчас в теме
Жаль нет итоговых картинок работы данного механизма в самой программе((
16. lambert@inbox.ru 7 21.10.17 17:20 Сейчас в теме
17. user973244 23.05.18 22:30 Сейчас в теме
Да очень огромное спасибо, немного здвинула меня с места ваше решение
18. maxf 19.07.19 18:45 Сейчас в теме
Понаделав кучу всякой ерунды полезных вещей, разработчики так и не удосужились сделать так, чтобы можно было понять в подчиненной форме, откуда она открыта без влезания в форму-владелец. В данном случае форма выбора серий открывается из нескольких десятков видов документов и влезать в каждый из них - это очень плохое решение, когда база еще худо-бедно на поддержке.
trustasia; 1CSoft; +2 Ответить
19. 1CSoft 7 27.04.20 13:49 Сейчас в теме
Спасибо! Использовал в своей работе.
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    3193    23    infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    15026    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    15632    0    John_d    22    

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

В данной публикации рассмотрим базовый подход к использованию собственных макетов в СКД на примере формирования небольшого отчета.

13.01.2020    9840    0    aximo    13    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    34172    0    unichkin    45    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    10748    0    kuzyara    33    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    25383    0    Yashazz    45    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    34786    0    rpgshnik    59    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    26148    0    tormozit    100    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    36959    0    ids79    52    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    21619    0    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    21840    0    YPermitin    80    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    73669    0    tormozit    129    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    25720    0    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    56057    0    ids79    37    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    26417    0    avalakh    21    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    44762    0    tormozit    38    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    42524    0    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    28541    0    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    21464    0    YPermitin    13    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

10.09.2017    40517    0    tormozit    72    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    16467    0    SeiOkami    50    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    42291    0    ids79    18    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    21395    0    dmurk    144    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    14160    0    m-rv    2    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    34345    0    YPermitin    52    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    35405    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    24234    0    Eret1k    23    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    17767    0    m-rv    17    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    29309    0    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования Разработка v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    23044    0    ellavs    86    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    26456    0    YPermitin    53    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    27423    0    m-rv    21    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    31422    0    ids79    9    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    35099    0    ids79    72    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    25720    0    itriot11    34    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    37462    0    Unk92    21    

Произвольный код в фоновом режиме

Практика программирования v8 1cv8.cf Бесплатно (free)

Задача: реализовать выполнение произвольного кода в фоновом режиме без изменения конфигурации, т.е. во внешней обработке.

03.09.2018    23948    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    34830    0    Rain88    46    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    71048    0    Serginio    108    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

25.06.2018    26132    0    olegtymko    47    

Введение в механизм представлений в ЗУП ред. 3

Практика программирования v8 v8::СПР ЗУП3.x Бесплатно (free)

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    34109    0    xrrg    82    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    22873    0    slozhenikin_com    20    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    30596    0    ids79    40    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    17003    0    Rustig    9    

Просмотр временных таблиц запроса в отладчике без изменения кода

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

Данный способ можно использовать для просмотра содержимого временных таблиц запросов (менеджеров временных таблиц) без внесения изменений в код.

24.04.2018    42866    0    avfed@rambler.ru    26    

[ВсеПросто] "Оперативный" информатор из 1С за 5 мин.

Практика программирования v8 Бесплатно (free)

Быть всегда в курсе дел, даже в дороге!

22.02.2018    25301    0    DarkAn    25    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    26240    0    grumagargler    26    

Минимализмы 3

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

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    43858    0    ildarovich    45    

Этюды по программированию. Взаимодействие с Microsoft Word

Практика программирования v8 Бесплатно (free)

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

11.12.2017    30930    0    milkers    23    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML v8 КД Бесплатно (free)

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    176845    0    MaxS    270    

Заполнение данных по ИНН контрагента с помощью альтернативного сервиса огрн.онлайн

Практика программирования v8 Бесплатно (free)

Код для заполнения данных по ИНН контрагента из ЕГРЮЛ с сайта огрн.онлайн.

01.11.2017    28674    0    slava_1c    50