ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Публикация № 838790 01.06.18

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

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

Идея в общем-то простая. В чистом SQL есть запросы типа INSERT, UPDATE, DELETE. А в языке запросов 1С таких запросов нет. Ну вернее не было ) Вашему вниманию предлагается расширение языка запросов, которое предоставляет возможность писать запросы типа ИЗМЕНИТЬ, УДАЛИТЬ и ВСТАВИТЬ. Для скачивания доступна консоль запросов, реализующая это расширение (так же работает и обычный ВЫБРАТЬ). Запросы могут быть например, такие:

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

Работает все это исключительно в рамках встроенного языка платформы и ни в какие внешние среды (типа прямого доступа к SQL) не лезет. Фразы ИЗМЕНИТЬ, УСТАНОВИТЬ, УДАЛИТЬ ИЗ и ВСТАВИТЬ В для языка запросов новые. Все остальное (ВЫБРАТЬ, ГДЕ, ПОМЕСТИТЬ и т.п.) подчиняется тем же правилам, что и в "обычном" запросе, т.е. эти части запроса могут быть сколь угодно сложными: включать вложенные запросы, формироваться временные таблицы и так далее. Поддерживается редактирование всех первичных таблиц:

  • таблицы ссылочных типов (документов, справочников...)
  • табличные части ссылочных типов
  • регистры подчиненные и не подчиненные регистратору

Если интересно подробнее - есть длинный и занудный текст о том как это работает.

Обработку можно использовать через пользовательский интерфейс как консоль запросов для аналитических целей или через программный интерфейс. Все процедуры для программного использования изолированы в модуле объекта, работа с ними максимально приближена к тому, как работает обычный объект Запрос. Сама форма консоли будет примером того как использовать программный интерфейс.

Последние изменения:

  • добавлена поддержка запроса ВСТАВИТЬ
  • изменен пользовательский интерфейс:основное место теперь отведено тексту запроса, а результат запроса можно развернуть на полный экран
  • добавлено редактирование параметров запроса табличного типа, т.е. теперь исходные данные для запроса на изменение можно вводить в Excel-стиле (в табличный документ)

Платформа 8.3.9.2233. Навскидку, единственное, что мешает даунгрейду до 8.2 - процедуры типа СтрСоединить, если их дописать - все должно заработать. Код полностью открыт, запароленных и/или обфусцированных участков нет. Удачи!

Скачать файлы

Наименование Файл Версия Размер
Консоль расширенных запросов

.epf 21,74Kb
57
.epf 1.2 21,74Kb 57 Скачать

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

Лучшие комментарии
6. uri1978 130 01.06.18 18:04 Сейчас в теме
С нетерпением ждем DROP TABLE, CREATE TABLE, ALTER TABLE и особенно DROP DATABASE
moreZ; NeLenin; user664038_av.lebedev; unknown181538; BaphoBush; BigB; rusmm93; NoRazum; GlukAl; banankos; TanyTany; Jeka44; kuzyara; LosevI; Светлый ум; Cerberus1; sleemp; Itilive.ru; Daynestro07; A_Max; SShipilov; DimaShapovaloff; Drivingblind; Berckk; Hobbit_Jedi; Denanhel; EasyWay; YaroslavHolovatiy; adhocprog; Patrio_O_Muerte; Sla; papche; Sartinsky; nickpugachev; wowik; zarucheisky; Yakud3a; chebser; awk; sevod; Kinestetik; lunjio; корум; suarez55; veyron21; babys; creatermc; and03122008@gmail.com; Gang031; cleaner_it; al_zzz; sCHTASS; IssakN; Gluk_1C; dabu-dabu; Serj1C; user612295_death4321; Dozkni; allgorhythm; DrAku1a; check2; +61 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vasilev2015 2212 01.06.18 10:19 Сейчас в теме
Перед исполнением запроса таблицы блокируются также, как бы это сделала СУБД ?
2. m-rv 902 01.06.18 10:52 Сейчас в теме
(1) никаких специальных блокировок не накладывается, но цикл изменений происходит в одной транзакции.
8. FB_117421965813180 02.06.18 06:15 Сейчас в теме
Сообщение было скрыто модератором.
...
9. FB_118315819056890 02.06.18 17:31 Сейчас в теме
Сообщение было скрыто модератором.
...
15. FB_111472339747891 04.06.18 08:12 Сейчас в теме
Сообщение было скрыто модератором.
...
3. t.v.s. 103 01.06.18 12:44 Сейчас в теме
Идея отличнейшая!
Для полного счастья не хватает конструкции
ВСТАВИТЬ [ИЛИ ИЗМЕНИТЬ] <Имя таблицы> ВЫБРАТЬ ИЗ...
4. m-rv 902 01.06.18 13:35 Сейчас в теме
(3) Запрос ВСТАВИТЬ (INSERT) ожидается, следите за обновлениями
5. vano-ekt 850 01.06.18 17:43 Сейчас в теме
6. uri1978 130 01.06.18 18:04 Сейчас в теме
С нетерпением ждем DROP TABLE, CREATE TABLE, ALTER TABLE и особенно DROP DATABASE
moreZ; NeLenin; user664038_av.lebedev; unknown181538; BaphoBush; BigB; rusmm93; NoRazum; GlukAl; banankos; TanyTany; Jeka44; kuzyara; LosevI; Светлый ум; Cerberus1; sleemp; Itilive.ru; Daynestro07; A_Max; SShipilov; DimaShapovaloff; Drivingblind; Berckk; Hobbit_Jedi; Denanhel; EasyWay; YaroslavHolovatiy; adhocprog; Patrio_O_Muerte; Sla; papche; Sartinsky; nickpugachev; wowik; zarucheisky; Yakud3a; chebser; awk; sevod; Kinestetik; lunjio; корум; suarez55; veyron21; babys; creatermc; and03122008@gmail.com; Gang031; cleaner_it; al_zzz; sCHTASS; IssakN; Gluk_1C; dabu-dabu; Serj1C; user612295_death4321; Dozkni; allgorhythm; DrAku1a; check2; +61 Ответить
10. kote 524 02.06.18 19:47 Сейчас в теме
(6) это невозможно по определению - объекты и регистры создаются исключительно только через конфигуратор..
11. baton_pk 411 02.06.18 20:12 Сейчас в теме
(10)
это невозможно по определению

не, ну... выгрузить конфу в файлы, поменять/добавить/удалить, загрузить обратно и обновить.
13. kote 524 02.06.18 20:21 Сейчас в теме
(11) потом выгнать всех пользователей, применить изменения, загнать всех обратно.. и обязательно не забыть на каком месте остановились, чтоб с этого же места продолжить.
14. baton_pk 411 02.06.18 21:37 Сейчас в теме
(13) ну да. для этого ещё пара другая обработок. :)
41. zarucheisky 22.08.18 13:54 Сейчас в теме
7. Dream_kz 117 01.06.18 19:31 Сейчас в теме
1С-никам не просто так запретили запросы на запись)
user774630; wowik; Hobbit_Jedi; adhocprog; shushik; monkbest; kadild; user700035_6550355; shard; abadonna83; Gluk_1C; user612295_death4321; GROOVY; DrAku1a; akor77; +15 Ответить
12. baton_pk 411 02.06.18 20:13 Сейчас в теме
Идея - огонь! Сам ночами просыпался с мыслью сделать подобное!
16. German_Tagil 27 08.06.18 05:53 Сейчас в теме
конфигурация КА 1.1 - не запустилось
18. m-rv 902 08.06.18 07:45 Сейчас в теме
(16) уж не обычные ли это формы?
17. German_Tagil 27 08.06.18 05:57 Сейчас в теме
19. German_Tagil 27 08.06.18 07:45 Сейчас в теме
пишу самый простой запрос

изменить Документ.ЗаказПоставщику.Товары
УСТАНОВИТЬ Проект = &ПроектН
где Проект = &Проект


вылетает по ошибке
20. m-rv 902 08.06.18 07:48 Сейчас в теме
21. German_Tagil 27 08.06.18 07:50 Сейчас в теме
формы обычные запускаю из конфигуратора управляемое приложение
простой запрос
типа
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
ЗаказПоставщикуТовары.Номенклатура,
ЗаказПоставщикуТовары.Количество,
ЗаказПоставщикуТовары.Заявка,
ЗаказПоставщикуТовары.Проект
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
ЗаказПоставщикуТовары.Проект = &Проект
отрабатывает нормально
22. German_Tagil 27 08.06.18 07:50 Сейчас в теме
23. German_Tagil 27 08.06.18 07:54 Сейчас в теме
1CV8.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.
24. m-rv 902 08.06.18 07:56 Сейчас в теме
(23) это что-то совсем страшное. а какая платформа?
25. German_Tagil 27 08.06.18 08:02 Сейчас в теме
причем простой запрос
на изменение реквизитов документа работает

1С:Предприятие 8.2 (8.2.19.90)
27. m-rv 902 08.06.18 08:19 Сейчас в теме
(25) единственное что приходит в голову - начать построчную отладку и понять от какой конкретно инструкции платформа крашится.
26. German_Tagil 27 08.06.18 08:14 Сейчас в теме
у меня как раз задачка достаточно простая есть под данную консоль
28. German_Tagil 27 08.06.18 08:34 Сейчас в теме
может от того что с функциями что-то намудрил


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

Функция СтрНачинаетсяС(Знач Строка, Знач СтрокаПоиска)
 
    если Найти(Строка, СтрокаПоиска)=1 тогда 
		Возврат Истина;
	иначе 
		Возврат Ложь;
	конецесли;	
		
		
    КонецФункции   

	
	Функция СтрЗаканчиваетсяНа (Знач Строка, Знач СтрокаПоиска)
 
    если Найти(Строка, СтрокаПоиска)=1 тогда 
		Возврат Истина;
	иначе 
		Возврат Ложь;
	конецесли;	
		
		
    КонецФункции   

	
	
	Функция СтрСоединить(Массив, Разделитель="")
    Строка = "";
    Для каждого Элемент Из Массив Цикл
        Строка = Строка + СокрЛП(Элемент) + Разделитель;
    КонецЦикла;
    
    Возврат Строка;
КонецФункции
	
	


Функция стрРазделить(Знач Строка, Знач Разделитель = ",",
    Знач ПропускатьПустыеСтроки = Неопределено)
 
    Результат = Новый Массив;
 
    // для обеспечения обратной совместимости
    Если ПропускатьПустыеСтроки = Неопределено Тогда
        ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
        Если ПустаяСтрока(Строка) Тогда 
            Если Разделитель = " " Тогда
                Результат.Добавить("");
            КонецЕсли;
            Возврат Результат;
        КонецЕсли;
    КонецЕсли;
    //
 
    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
        Подстрока = Лев(Строка, Позиция - 1);
        Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
            Результат.Добавить(Подстрока);
        КонецЕсли;
        Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
        Позиция = Найти(Строка, Разделитель);
    КонецЦикла;
 
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
        Результат.Добавить(Строка);
    КонецЕсли;
 
    Возврат Результат;
 
КонецФункции
Показать
29. German_Tagil 27 08.06.18 08:41 Сейчас в теме
Функция СтрЗаканчиваетсяНа не нашел
30. m-rv 902 08.06.18 08:48 Сейчас в теме
(29) это функции 8.3, в 8.2 их нет. недавно выкладывали их реализацию для подобных случаев.
31. German_Tagil 27 08.06.18 09:20 Сейчас в теме
неправильно сформулировал извиняюсь - я понял что эти функции для 8.3
а ссылку можете указать? подправлю - может взлетит
32. German_Tagil 27 08.06.18 10:10 Сейчас в теме
Функция ВыполнитьПакет(РасширенныйЗапрос) Экспорт

ИнициализироватьПараметрыРасширенногоЗапроса(РасширенныйЗапрос, Ложь);

Запрос = ИнициализироватьЗапросПолученияДанных(РасширенныйЗапрос);

МассивРезультатов = Запрос.ВыполнитьПакет();

ВыполнитьИзменениеДанных(РасширенныйЗапрос, МассивРезультатов);

Возврат МассивРезультатов;

КонецФункции

На ВыполнитьИзменениеДанных выносит
33. German_Tagil 27 08.06.18 11:19 Сейчас в теме
посмотрел отладчиком
ОбъектРедактирования.Записать();

на этом ее и выносит
34. German_Tagil 27 09.06.18 05:59 Сейчас в теме
функции СтрНайти,стрРазделить,СтрСоединить,СтрЗаканчиваетсяНа,СтрНачинаетсяС
проверил в ка 2.4 - рабочие

не вылетает
35. m-rv 902 09.06.18 07:58 Сейчас в теме
(34)
ошибка на строке
ОбъектРедактирования.Записать();
говорит о том, что проблема с записью самого объекта, при чем характер ошибки намекает на ее платформенную природу. попробуйде провалиться в обработчики/подписки перед/при записи.
36. German_Tagil 27 09.06.18 09:09 Сейчас в теме
в общем похоже у меня база тестовая с ошибками была
на другой заработало
37. Necytij 11.07.18 07:48 Сейчас в теме
Я так понимаю эта красота скорости не добавляет, и сделана сугубо чтобы "скоротать вечерок" и по несколько минут на каждое МАССОВОЕ изменение реквизитов, которое по какой-то причине групповой обработкой править не получается. Честно говоря вообще тяжеловато понять суть тогда зачем в принципе такая вещь, если большую часть всего этого можно было сделать стандартными обработками чем извращаться создавая запрос через конструктор, потом менять текст вручную и программно парсить его обратно... Команду инсерт на 1 объект в итоге писать+запускать дольше чем просто открыть в режиме в 1С и создать вручную, нет?
Лучше бы изменяемую схему СКД + групповое изменение, насколько помню уже давно есть такие консоли.
38. m-rv 902 11.07.18 09:39 Сейчас в теме
(37) вы знаете, у меня всегда подобные комментарии вызывают ассоциации типа "зачем нужен белый хлеб, если есть черный?", "зачем придумывать ауди, когда уже есть мерседес?".
это альтернативный инструмент. смотришь, сравниваешь, выбираешь какой подходит в твоей ситуации. в моем понимании, основными (но не факт что единственными) плюсами запроса на изменение является его предельная простота в сравнении с "наколеночной" обработкой и крайне широкие возможности в сравнении с обработкой группового изменения данных.
соответственно, аналитики и консультанты теперь имеют альтернативный инструмент массового изменения данных. да и программисту по-короче набросать две строчки запроса, чем писать "запрос = новый запрос();...".
40. Necytij 11.07.18 19:32 Сейчас в теме
(38) Я свои ассоциации называть не буду. Но про хлеб - "на вкус и цвет", про Ауди - хотя бы разница в цене тут цена производительности таже, цена программирования очень спорна. Примеры, мне кажется, не подходят.
Я и спрашиваю преимущества в чем? В том, что есть люди которым удобнее писать запрос вручную наизусть зная структуру имен полей? Чем перетащить из таблички? И по вашему ответу тоже не вижу ни одного реального примера. Представите хоть один реальный, значимый?
Чем кстати этот инструмент шире по сравнению с хорошей групповой обработкой?

"да и программисту по-короче набросать две строчки запроса", я тоже могу придираться к словам, а не вычленять их смысл. Запрос написанный в 2 стандартных коротких строчки запроса не задача для написания такого инструмента и даже изучения такого инструмента не стоит, имхо.
39. m-rv 902 11.07.18 09:42 Сейчас в теме
(37) да, и что касается
извращаться создавая запрос через конструктор, потом менять текст вручную

так извращаться действительно нет смысла. если вы не можете набросать запрос без конструктора - переходить к запросам на изменение рановато..
NeLenin; user774630; starik-2005; +3 Ответить
42. echo77 1256 22.08.18 20:36 Сейчас в теме
(0) Зачем это может пригодится? Можете привести жизненный пример?
44. Casey1984 3 27.08.18 08:42 Сейчас в теме
(42) Ого, только сегодня заметил эту разработку! Читаю это:

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

таблицы ссылочных типов (документов, справочников...)
табличные части ссылочных типов
регистры подчиненные и не подчиненные регистратору"

и вспоминаю, что иногда возникают задачи больших корректировок регистров, приходится делать обработку, которая формирует набор(ы) записей регистров, на основании существующей в ИБ информации, и привязывает их к "ручной операции/корректировке". Попробую делать это в запросе, не открывая конфигуратора, вдруг будет удобнее. Получается более универсальный инструмент чем типовая обработка изменения реквизитов - может менять ещё и регистры.
43. maxx 934 23.08.18 10:23 Сейчас в теме
Прикольно, мне кажется полезным может оказаться Веберам, которые с 1с приходится сталкиваться немного типа Номенклатуры или Контрагентов, а они знают чистый SQL
45. Patrio_O_Muerte 28.08.18 12:24 Сейчас в теме
Руки оторвать за реализацию.
46. m-rv 902 28.08.18 13:43 Сейчас в теме
47. Patrio_O_Muerte 28.08.18 13:54 Сейчас в теме
Представьте сколько программистов с невысоким уровнем квалификации начнет использовать эту обработку.
Конечно идея хорошая, но к таким вещам необходимо ограничивать доступ.
Фирма 1С сколько ее не ругай сделала очень грамотный ход - она просто отказалась от реализации подобных возможностей из режима предприятия.
48. m-rv 902 28.08.18 15:08 Сейчас в теме
(47) здесь, кстати, не в первый раз упоминают о том, что вот есть какие-то "Программисты 1С", которые щас все это возьмут и как начнут все портить!!!
если серьезно, без шуток и ёрничания: в чем опасность? почему плохо, что такой инструмент будет у всех?
61. NeLenin 7 01.04.21 11:11 Сейчас в теме
(42)У меня есть схожая разработка. Позволяет пакетом запросов изменять/удалять/добавлять любые данные (все преимущества и ограничения, аналогичные разработке уважаемого автора) Применяю ее довольно активно и довольно давно (лет 8 точно). Нужно поменять какие-то данные - пишешь запрос на изменение, не надо кодировать на языке 1с.
Если говорить о более сложных моментах, то удобно при обменах данными с произвольными БД, т.к. пишешь только запросы/пакеты запросов на выгрузку/загрузку данных, в код на 1с не лезешь.
49. m-rv 902 28.08.18 15:09 Сейчас в теме
(47) и согласитесь, пока сюда не начнет постить комментарии Сергей Георгиевич - о мотивах фирмы 1С мы ничего не узнаем.
50. Darklight 27 28.08.18 17:02 Сейчас в теме
Вещь вполне интересная. Я буду в лагере тех, кто за такое и кто ждёт такого в будущих редакциях 1С: Предприятия уже во встроенном в платформу виде (но, конечно же, с уже оптимизацией проведение операций массовых изменений в данных - это очень был бы вотребовано на проектах с BIG DATA)! А кто говорит, что правильно, что 1С не добавила - обоснуйте в чём правильность-то, на мой взгляд они просто поленились.
51. m-rv 902 29.08.18 07:56 Сейчас в теме
(50) с оптимизацией будут большие проблемы: если запрос ИЗМЕНИТЬ транслировать напрямую в UPDATE - выпадет целая область функциональности слоя платформы (подписки, события объекта, регистрация на планах обмена...). Хотя, может быть, можно что-то придумать, типа множественного аргумента в подписке как в команде...
52. Darklight 27 29.08.18 10:12 Сейчас в теме
(51)Я согласен - оптимизировать сложно - это уже архитектурная задача для будущих редакций 1С Предприятие (скорее всего уже 9-го поколения, где, на мой взгляд, уже архитектурно должна быть заложена обработка не одиночных данных - а целых наборов (причём с предположением, что они могут быть очень большими) - во всех местах алгоритмов, в т.ч. в параллельном режиме). Это очень важный шаг на пути расширения облачных технологий и BIG DATA - это тренды начала XXI века.
53. Automatik 14.06.19 13:07 Сейчас в теме
А если помечать на удаление, например "Справочник.Договоры", то процедура "ПередЗаписью" будет отрабатываться ?
54. m-rv 902 16.06.19 13:11 Сейчас в теме
55. muskul 08.07.19 08:21 Сейчас в теме
Зачем все хотят запросы на данные? что вы такого в таблицы пытаетесь записать.
56. acanta 08.07.19 08:36 Сейчас в теме
(55) это назы́вается назло маме отморожу уши. Ответственные пользователи и руководство за то, чтобы ни программист ни разработчик ни сисадмин не имели к данным никакого доступа.
По крайней мере к реальным.
Любые обработки в массивах рекомендуется исключить или хотя бы свести к минимуму.
Программа должна предусматривать безопасную работу пользователей без вмешательства программиста. Это все относится к обычному режиму.
Но если это хайлоад, то все меняется на прямо противоположные требования, и момент, когда все уже ...устали может наступить без квалифицированного программиста, владеющего необходимыми навыками.
57. m-rv 902 08.07.19 10:45 Сейчас в теме
(55) это позволяет удобнее манипулировать данными в некоторых ситуациях. Не в коде писать, а в пользовательской консоли, когда надо подправить данных на внедрении или типа того..
58. muskul 08.07.19 10:46 Сейчас в теме
(57) Приведите пример такой правки. Вот что напрямую легче.
59. m-rv 902 08.07.19 11:43 Сейчас в теме
(58) ну заливали данные в новую базу, продолбали ИспользованиеХарактеристик у номенклатуры. Решение в консоли:
ИЗМЕНИТЬ Справочник.Номенклатура
УСТАНОВИТЬ ИспользованиеХарактеристик = ВидНоменклатуры.ИспользованиеХарактеристик
ГДЕ НЕ ИспользованиеХарактеристик = ВидНоменклатуры.ИспользованиеХарактеристик
процедурным языком будет существенно дольше с точки зрения разработки. запись, понятно, будет длиться одинаковое количество времени.
unknown181538; +1 Ответить
60. muskul 09.07.19 02:31 Сейчас в теме
(59)Кароче вы предлагаете костыль который будет использоваться менее 1% (кто умеет правильно все это написать и вставить в таблице) в менее 1% реальных задач
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

5 стартмани

21.12.2020    6862    21    huxuxuya    11    

Интерактивная справка по объектам 1С (подключаемое расширение)

Практика программирования Работа с интерфейсом v8 ERP2 Абонемент ($m)

База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020    13019    73    sapervodichka    43    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы Jenkins SonarQube v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    33610    27    Stepa86    46    

Алгоритмы поиска пути в графе

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Реализуем алгоритмы поиска пути в графе на платформе 1С 8.3, такие как алгоритм А*, поиск в ширину, жадный поиск, алгоритм Дейкстры и вконце волновой.

1 стартмани

09.07.2019    21629    12    RonX01    10    

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    26003    7    m-rv    91    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    26284    14    RocKeR_13    16    

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    50227    66    dsdred    17    

Из Excel в 1С запросом

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

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

14.08.2018    21390    m-rv    5    

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

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

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

01.06.2018    34913    m-rv    22    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    34095    31    informa1555    30    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    62118    24    kalyaka    17    

Представления в запросах. ЗУП

Практика программирования v8::СПР v8::Запросы ЗУП3.x Россия Абонемент ($m)

О пользе функции ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Запрос.Текст, ). Где есть запрос-пустышка, например, "Представления_КадровыеДанныеСотрудников. Тестировано в Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.4.171) на платформе 8.3.12.1412. В этой конфигурации я насчитал 66 макетов в различных отчетах, где применяется этот механизм, в которых можно получить до 220 различных данных о сотруднике. Если доработать типовой код, то возможно этот список добавить. В моем примере я нахожу данные: Организация, Сотрудник, ФизЛицо, ФИОПолные, ДатаРождения, МестоРождения, ДокументПредставление, АдресПоПропискеПредставление, АдресМестаПроживанияПредставление, ДатаПриема, Должность, ДатаУвольнения,ТрудовойДоговорДата,ТрудовойДоговорНомер, Подразделение.

1 стартмани

28.05.2018    28215    36    IgorXml    16    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    32918    20    mvxyz    17    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    38038    11    SITR-utyos    13    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    31356    56    kwazi    6    

Паузы при исполнении кода (Sleep для 1С)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

28.11.2017    62720    17    swimdog    49    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    32664    73    vasvl123    9    

Макет в СКД - пример всех возможных типовых вариантов

Практика программирования Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Макет СКД: наглядное представление того, что, как и куда выводится при типовых настройках.

1 стартмани

09.11.2017    25917    80    freelancer    4    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    39940    144    PLAstic    68    

Умный дом на 1С + ардуино

Практика программирования v8 Абонемент ($m)

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    26621    21    sasha777666    64    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    53036    36    Demanoidos    60    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    158453    13    signum2009    48    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.03.2017    36943    121    romasna    52    

Распознавание текста с помощью нейросетей Google Cloud Vision и 1С

Практика программирования v8 1cv8.cf Абонемент ($m)

Возможности Google Cloud Vision в распознавании текста.

1 стартмани

08.02.2017    36143    143    kiv1c    18    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    58485    35    ildarovich    41    

Графическая схема. Управление при помощи XDTO.

Практика программирования v8 Абонемент ($m)

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

2 стартмани

16.01.2017    27640    122    Alxby    25    

Простой редактор плана помещения JavaScript

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

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    25414    103    igel9780    22    

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9

Практика программирования WEB v8 1cv8.cf Россия Абонемент ($m)

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    32814    17    Anton64    23    

Загрузка файлов на сервер с прогрессом и докачкой

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример использования новых возможностей платформы 8.3.9 по низкоуровневой работе с двоичными данными для инкрементальной передачи файлов на сервер.

1 стартмани

04.10.2016    16182    57    mrstomak    21    

Несколько шаблонов для доработки типовых конфигураций

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

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

1 стартмани

03.10.2016    40653    98    json    25    

HTTP-сервис: отчеты [Расширение]

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

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    31938    147    Stepa86    16    

Недокументированное использование стандартных форм Upd.

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Вам не хватает возможностей в платформе 1С или у Вас нет времени на углубленное изучение платформы 1С? Рассмотрены возможности использования стандартных форм, вызываемых из платформы.

1 стартмани

26.07.2016    32406    96    ZhokhovM    65    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    65107    11    wowik    32    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

Инструментарий разработчика Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    71417    210    rozer    67    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    72649    20    arakelyan    25    

Еще один способ расчета остатков на каждый день в запросе

Математика и алгоритмы Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.04.2016    39201    54    ildarovich    23    

Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Все не раз видели, как в типовых конфигурациях, построенных на основе БСП (Библиотека стандартных подсистем), печатные формы, построенные на основе Табличного документа, выводятся в специальную форму "ПечатьДокументов". Эта форма входит в состав подсистемы "Печать" из БСП. При разработке своих печатных форм, иногда необходимо запросить у пользователя дополнительные данные необходимые для печати. Тут встает вопрос, как в этом случае вывести печатную форму в форму "Печать документа". В этой статье я рассмотрю, как реализовать вывод печатной формы в упомянутую форму из подсистемы "Печать", в случае если мы хотим перед выводом печатной формы запросить у пользователя дополнительные данные. Здесь будут рассмотрены два случая: когда реализуется печатная форма с использованием подсистемы "Дополнительные отчеты и обработки" и когда печатная форма добавляется в конфигурацию в режиме конфигуратора, т.е. вносятся изменения в типовую конфигурацию.

1 стартмани

29.03.2016    107741    204    lopatin    15    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    92134    172    igo1    58    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

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

1 стартмани

03.03.2016    21627    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

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

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

1 стартмани

17.02.2016    56904    56    yuraos    18    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    65764    210    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

16.02.2016    26831    8    Tatitutu    5