Тюнинг типовых конфигураций 1с 8.1/8.2 (уже 7 примеров, обновлено 14.03.2013)

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

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

Примеры небольших доработок типовых, которые сделают работу проще и приятнее...

В данной статье будут публиковаться примеры доработок типовых (в основном интерфейсной части). Доработки как типовых 8.1, так и 8.2. Всё выкладывать сразу не буду, постепенно дописывая свежие примеры.

1. Вставка фото пользователя в типовой справочник Пользователи для 8.2 Управляемые формы.

2. Автоматизация ввода Грузополучателя в документе Реализация товаров и услуг

3. Номер счет-фактуры совпадает с номером документа Реализация товаров и услуг

4. Запускаем произвольную обработку и загружаем произвольные данные на компьютере пользователя при запуске 1с

5. Организация складов без учета серий и характеристик

6. Добавляем картинки к кнопкам внешних печатных форм и заполнения табличных частей (добавлено 23.11.2011)

7. Выводит вес брутто в шапке табличной части Товары документа Заказ или Реализация (добавлено 14.03.2013)

 

Пример 1. Типовой справочник Пользователи в 8.2. Управляемая форма - вставка фото пользователя и списка контактов. Не для тонкого и web-клиента.

В типовых конфигурациях на платформе 8.2 данных справочник перевели на управляемые формы. Захотелось сразу попробовать, что можно сотворить с ним без кодинга. Тэк-с...Ага у нас в пользователе есть поле Физлицо. Оттуда можно поднятуть несколько реквизитов, обычно редко кому нужных. Что ещё? Ага!,У физлица есть фотография. А нельзя ли вывести фотографию сразу в списке пользователей и в форме элементов? Фиг... В управляемых формах картинки выводятся по-другому ): Что ещё можно вывести? Контактную информацию! Опять облом - данные хранятся в регистре сведений и через настройку управляемой формы до неё не добраться.

Придется допиливать.

Для начала откроем в Конфигураторе форму списка и добавим туда новый реквизит АдресКартинки, типа Строка. Потом добавим Динамический список КонтактнаяИнформацияТаблица с произвольным запросом.

ВЫБРАТЬ
      КонтактнаяИнформация.Вид,
      КонтактнаяИнформация.Представление
ИЗ
      РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
      КонтактнаяИнформация.Объект = &Ссылка

 

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

 

После этого нужно выбрать в списке элементов формы сам список пользователей и в свойствах найти событие ПриАктивизацииСтроки и добавить туда процедуру


&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)   
   
Если Не ЗначениеЗаполнено(Элемент.ТекущаяСтрока) Тогда
       
АдресКартинки="";
       
КонтактнаяИнформацияТаблица.Параметры.УстановитьЗначениеПараметра("Ссылка",Неопределено);
    Иначе
       
АдресКартинки = ПолучитьКартинкуФизЛица(Элемент.ТекущаяСтрока.ФизЛицо);
       
КонтактнаяИнформацияТаблица.Параметры.УстановитьЗначениеПараметра("Ссылка",Элемент.ТекущаяСтрока.Ссылка);
    КонецЕсли;

КонецПроцедуры

&НаСервере
Функция ПолучитьКартинкуФизЛица(ФизЛицо)

    Если
ЗначениеЗаполнено(ФизЛицо) Тогда
        Возврат(
ПоместитьВоВременноеХранилище(ФизЛицо.ОсновноеИзображение.Хранилище.Получить()));
    Иначе
        Возврат (
"");
    КонецЕсли;
КонецФункции


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

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

Если ЗначениеЗаполнено(Объект.ФизЛицо) Тогда
       
АдресКартинки = ПоместитьВоВременноеХранилище(Объект.ФизЛицо.ОсновноеИзображение.Хранилище.Получить());
КонецЕсли
;

 

 

 

 Пример 2. Документ Реализация товаров и услуг. Ускорение оформления шапки для филиалов/магазинов. УПП/КА/УТ. Толстый клиент.

Ситуация следующая:

1. Есть магазины расположенные в разных частях города и в разных городах, но входящие в одну сеть.

2. Документы оформляются на головную организацию, а магазин указывается в качестве грузополучателя. Соответственно и адрес.

Таким образом, оператор при вводе реализации должен указать контрагента, перейти на закладу Дополнительно и указать там грузополучателя и адрес доставки. Это минимум 4 лишних щелчка мышью. Как можно облегчить ввод?

Операторы пошли легким путем. В документе указывается не головной контрагент, а грузополучатель. Это удобное, но НЕПРАВИЛЬНОЕ решение с т.з. учета.

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

Сначала пишем следующую процедуру, которая будет вызываться при изменение контрагента в форме документе:

Процедура mavМеняемНаГоловногоКонтрагента(Док) Экспорт

    Если
Док.Контрагент = Док.Контрагент.ГоловнойКонтрагент Тогда
        Если Не
ЗначениеЗаполнено(Док.Грузополучатель) Тогда
            Возврат;
        КонецЕсли;
        Если
Док.Грузополучатель <> Док.Грузополучатель.ГоловнойКонтрагент Тогда
           
Сообщить("Внимание! Очистили поля Грузополучатель и Адрес доставки!",СтатусСообщения.Информация);
           
Док.Грузополучатель = Неопределено;
           
Док.АдресДоставки = "";
           
Док.Комментарий = "";
        КонецЕсли;
    Иначе
       
Док.Грузополучатель = Док.Контрагент;
       
Док.Комментарий     = Док.Контрагент.Наименование;
       
Док.Контрагент      = Док.Контрагент.ГоловнойКонтрагент;
       
Док.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
    КонецЕсли;

КонецПроцедуры


Как видно,  процедура обрабатывает 2 варианта:

1. Когда контрагент не имеет головного. В этом случае, если грузополучатель в документе стоит, то это поле, адрес доставки и комментарий очищает.

2. Когда у контрагента проставлен головной. В этом случае контрагент переносится в грузополучателя, в комментарий записывается название контрагента (чтобы в списке документов можно было сразу видеть к какому магазину относится документ), в поле Контрагент устанавливается головной контрагент, а поле договор контрагента очищается.

Данную функцию помещаем или в сам документ, или в общий модуль(как у меня). Потом изменяем в форме документа функцию на событие ПриИзменении поля Контрагент:

Процедура КонтрагентПриИзменении(Элемент)

   
НашМодуль.mavМеняемНаГоловногоКонтрагента(ЭтотОбъект); //mav
   
ПриИзмененииКонтрагента();

КонецПроцедуры
// КонтрагентПриИзменении()


 Но это ещё не всё. Не заполненным осталось поле АдресДоставки. Можно дописать процедуру по установке грузополучателя. Но можно и расширить применяемость процедуры по автоматическому проставлению Адреса доставки поместив вызов в процедуру ПриИзмененииКонтрагента. Процедура будет такой:

Процедура mavУстановитьАдресДоставки(Док) Экспорт

    Если
ЗначениеЗаполнено(Док.Грузополучатель) Тогда
       
ТекКонтрагент = Док.Грузополучатель;
    Иначе
       
ТекКонтрагент = Док.Контрагент;
    КонецЕсли;

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

    Если
СокрЛП(Док.АдресДоставки) = СокрЛП(Результат.Представление) Тогда
        Возврат;
    КонецЕсли;

    Если
СокрЛП(Док.АдресДоставки)="" Тогда
       
Док.АдресДоставки = Результат.Представление;
    Иначе
        Если
Вопрос("Изменить адрес доставки?",РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда
            Возврат;
        Иначе
           
Док.АдресДоставки = Результат.Представление;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры


В запросе отбираем конкретный адрес по владельцу (контрагент или грузополучатель, если заполнен). Дополнительно накладывается ограничение, что это будет именно адрес. Следующее условие зависит от пожеланий пользователей. Можно указать, что отбираться будет запись регистра с конкретным видом (например, Адрес доставки или Фактический адрес). В моем случае отбор решили делать по ресурсу ЗначениеПоУмолчанию. Данный ресурс обычно отвечает за то, чтобы с форме элемента Контрагента какие-то контактные данные отмечались жирным (кроме этой визуальной функции в типовых этот ресурс никаких функций не несет). Для это в форме есть кнопка Основной над таблицами с адресами и контактной информацией.

Вызов этом процедуры нужно добавить в конец процедуры формы Реализации ПриИзмененииКонтрагента.

После применения вышеперечисленных изменений получим следующий функционал при работе с документом Реализация товаров и услуг:

1. Если у контрагента указан основной адрес, то он автоматически проставляется в поле Адрес доставки.

2. Если у магазина проставить головного контрагента, то в документе можно в качестве контрагента выбирать магазин и все поле перезаполнятся в соответствии с требованиями учета. Как это работает:

  • Есть магазины "Золушка" и "Белоснежка" принадлежащие ООО "Сказки". ООО "Сказки" просит указать в грузополучателе кроме ООО "Сказки" ещё и название магазина.
  • Заводим 3 соответствующих контрагента с необходимыми юридическими данными и адресами. В магазинах указываем полное название ООО "Сказки" плюс название магазина. Короткое название делаем как удобно операторам. Например, Золушка и Белоснежка.
  • У Золушки и Белоснежки указываем основные адреса и головного контрагента ООО "Сказки".
  • Теперь при оформлении реализации можно выбрать контрагента Золушка. При этом в поле грузополучатель попадет Золушка, в поле адрес доставки её основной адрес, а контрагентом станет ООО "Сказки"...

 

Пример 3.  Номер счет-фактуры совпадает с номером документа реализации.

Очень, знаете ли, бухгалтерии удобно когда номера счет-фактур совпадают с номерами документов. Но тут возниает несколько проблем:

  1. 1с реализовала счет-фактуру отдельным документом со своей нумерацией.
  2. Основанием счет-фактуры может быть не только реализация, но и несколько других видов документов.

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

1. Подписка на событие ПриУстановкеНовогоНомера для документа Счет-фактура выданный.

2. Процедура на данное событие:

 


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

 

3. Контролируемо нарушить авто-нумерацию счет-фактур так, чтобы она не совпадала с нумерацией реализации. Например, поставить дополнительный буквенный префикс. Таким образом, все последующие счета-фактуры основанные не на реализации будут идти с доп.префиксом и нумерация будет сохранять уникальность. При печати такие счета фактуры будут выходить с префиксом и всеми нулями перед основной цифрой. Но это не страшно.

 

 

Пример 4. Возможность запускать произвольную обработку и загружать произвольные данные на компьютере пользователя при запуске 1с.

При этом обработку и загружаемые файлы можно менять уже без изменения конфигурации.

Итак. Как всегда наша задача - получить новый функционал с минимум изменений в типовом коде. В типовых конфигурациях есть замечательный регистр сведений - "Внешние компоненты". Регистр предназначен для хранения внешних компонент, которые загружаются в рабочий каталог 1с на машине пользователя при запуске 1с (кстати, в windows 7 это возможно только, если запускать 1с под администратором, что странно). Но в этот регистр можно записывать не только dll, но и любые другие файлы.

Регистр Внешние компоненты

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

Один из вариантов использования - добавить в конфигурацию автозагрузку.

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

    Попытка
       
ИмяФайла = КаталогПрограммы()+"Autostart.epf";
       
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
        Если Не
Форма = Неопределено Тогда
           
Форма.Открыть();
        Иначе
           
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
        КонецЕсли;
    Исключение
       
Предупреждение("Не удалось запустить обработку Autostart.");
    КонецПопытки;

где Autostart - это имя запускаемой обработки. Вот код такой обработки для примера, который с помощью внешней компоненты Miracle меняет задний фон и иконку в 1с:

Процедура ВизуальнаяИдентификацияБазы()
    Попытка
       
ЗагрузитьВнешнююКомпоненту("MiracleV8.dll");
       
L=ПолучитьCOMОбъект("","AddIn.MiracleClass");
       
L.SetMainIcon(КаталогПрограммы()+"main.ico");
       
L.SetMDIPicture(КаталогПрограммы()+"logo.jpg");
    Исключение
    КонецПопытки;
КонецПроцедуры;

ВизуальнаяИдентификацияБазы();

 

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

 

Пример 5. Организация складов без учета характеристик или серий (без документа Корректировка серий и характеристик номенклатуры)

Решение не отличается универсальностью, но зато очень простое.

Дано:

На предприятии есть несколько складов, где не нужен/не возможен/пока не реализован учет по сериям и характеристикам, но остальным складам он нужен. Типовое решение - документ Корректировка СиХ номенклатуры. Но тогда вместо одного документа Перемещение требуется создавать/исправлять и КСиХН.

Решение:

Для начала создадим для складов 2 категории "Не учитывать характеристики" и "Не учитывать серии".

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

 


    Если Источник.Количество() = 0 ИЛИ Источник[0].Период < '20110501' Тогда
        Возврат;
    КонецЕсли;
   
Запрос = Новый Запрос();
   
Запрос.Текст = "ВЫБРАТЬ
                   |    КатегорииОбъектов.Объект КАК Склад
                   |ИЗ
                   |    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
                   |ГДЕ
                   |    КатегорииОбъектов.Категория.Код = &Код"
;

   
Запрос.УстановитьПараметр("Код","Ю00000009"); //серии
   
СкладыСерии = Запрос.Выполнить().Выгрузить();

   
Запрос.УстановитьПараметр("Код","Ю00000008"); //характеристики
   
СкладыХарактеристики = Запрос.Выполнить().Выгрузить();

    Если
СкладыСерии.Количество() = 0 И СкладыХарактеристики.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;


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

        Если
СкладыХарактеристики.Найти(ЗаписьРегистра.Склад,"Склад")<>Неопределено Тогда
           
ЗаписьРегистра.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
        КонецЕсли;
    КонецЦикла;

 

Пример 6. Добавляем картинки к кнопкам внешних печатных форм и заполнения табличных частей

 Ищем процедуру ДобавитьСтрокуВДеревоКнопок. Обычно она находится в общем модуле УниверсальныеМеханизмы. Ищем в начале процедуры строчку

СтрокаКнопки.Имя = Имя;

и перед ней вставляем такой код 


    Если Не ЗначениеЗаполнено(Картинка) Тогда
        Попытка
           
Расшифровка.ДополнительныеПараметрыОбработки.Свойство("НазваниеКартинки", Картинка);
           
Картинка = БиблиотекаКартинок[Картинка];
        Исключение
           
Картинка = Неопределено;
        КонецПопытки;
    КонецЕсли;

Кроме того, в общей форме ФормаВыбораПечатныхФорм в таблице в основной колонке в поле Данные картинки нужно написать Картинка. Это требуется только для печатных форм. Для кнопок заполнения табличных частей в типовых уже всё стоит как надо.

 

В результате,  если в дополнительных параметрах внешней обработки указать параметр НазваниеКартинки с строкой содержащей название картинки из библиотеки картинок

 

то эта картинка появится при выборе печатной формы или кнопки заполнения табличной части:

  

 

 Пример 7. Выводит вес брутто в шапке табличной части Товары документа Заказ или Реализация

Добавляем в модуль формы саму процедуру

Процедура mavПосчитатьВесНажатие()
   
Вес = 0;
    Для Каждого
стр из Товары Цикл
       
Вес = Вес + стр.ЕдиницаИзмерения.Вес * стр.Количество;
    КонецЦикла;
   
ЭлементыФормы.Товары.Колонки.Номенклатура.ТекстШапки = "Номенклатура. Брутто: " + Строка(Вес)+ " кг";
КонецПроцедуры
 
 

и её вызов в процедуры ПередОткрытием (формы), ТоварыПриОкончанииРедактирования(табличной части) и ОбработкаПодбора

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4421 26.11.10 17:36 Сейчас в теме
Доработки под 8.1. с каждым днём всё неактуальней и всё дальше на задний план.
А вот материалы по управляемым 8.2 - это вещь.
Если уж бухню на управляемых запилили.
2. anig99 2724 26.11.10 19:36 Сейчас в теме
Некоторые вещи универсальны - там меняется логика, а не только код
3. Русский 28.11.10 08:06 Сейчас в теме
Стоить заметить, что такая доработка существенно снижает производительность динамического списка...
4. anig99 2724 28.11.10 08:53 Сейчас в теме
(3) Если не знаешь всех пользователей по ФИО, то скорее всего у тебя их больше 30. Соответственно сервер для такой базы должен быть мощный. Поэтому в реальности, у того кому потребуется такая доработка, падение производительности будет незначительна.
5. Русский 28.11.10 11:47 Сейчас в теме
(4) если пользователи будут в локальной сети, то разницы они почти не заметят, а если они будут работать через интернет, то "притормаживание" будет заметным. Количество вызовов сервера увеличивается в разы, сам экземпляр формы будете "гонять" между клиентом и сервером раз в 10-30 больше а объем трафика больше раз в 20, при условии, что изображения будут иметь маленький размер...

Делайте выводы.
6. Русский 28.11.10 11:54 Сейчас в теме
То есть "узким" местом тут является сеть, а не железо сервера, хоть нагрузка на последний тоже увеличивается, пускай даже и не настолько заметно.
7. anig99 2724 28.11.10 16:12 Сейчас в теме
Не соглашусь с вашими количественными оценками. Во первых, по количеству вызовов. Откуда такие цифры? Информация запрашивается при выборе строчки, а не при выводе списка или обновлении. Трафик зависит от размера картинки физ.лица. В управляемом интерфейсе ведь тоже есть картинки.
8. Русский 28.11.10 18:55 Сейчас в теме
(7)
&НаСервере

вот эта вот штуковина тянет всю форму на сервер. Ну и представьте, что же будет, если пользователю вздумается не выделять нужные строки списка, а листать список с клавиатуры? :o
9. anig99 2724 28.11.10 19:42 Сейчас в теме
(8) ну во-первых, &НаСервере НИЧЕГО на сервер не отправляет. Это инструкция определяет, что функция будет выполнена на сервере и её результаты уже будут направлены на клиент. Управляемые формы работают так ВСЕ. Разберитесь в тонкостях управляемых форм получше, т.к. УФ всегда существует и на клиенте, и на сервере и обмен между ними происходит постоянно, вне зависимости есть ли там динамические списки или нет. Про картинки я соглашусь, что они увеличивают траффик, но никак не интенсивность вызовов.
Ближайший аналог от 1с - справочник Номенклатура, где в форме списка можно рассчитывать остатки и смотреть изображение. Там запрос на остатки много тяжелее.
И насколько я помню, справочник Пользователи предназначена для Администраторов.
10. Русский 29.11.10 17:36 Сейчас в теме
(9)
ну во-первых, &НаСервере НИЧЕГО на сервер не отправляет

т.к. УФ всегда существует и на клиенте, и на сервере


:o Может стоит почитать документацию?
11. anig99 2724 29.11.10 23:35 Сейчас в теме
(10) в общем неправы оба.
Я, когда говорю, что обмен происходит постоянно. Обмен происходит по необходимости. И изначально форма пользователей не содержит дополнительных вызовов, поэтому добавление данной функции повлечет за собой увеличение вызовов процедур и траффика.
Но так как изначально объем данных мизерные, то эти "разы" тоже превращаются в незначительные объемы (уже проверено на фактических данных, просто открытие справочника Пользователи занимает времени в десятки раз меньше). Особенно если заменить &НаСервере на &НаСервереБезКонтекста.
Кроме того, данные код вообще не предназначен для тонкого и web-клиента - он там просто не работает.
13. Русский 30.11.10 06:13 Сейчас в теме
(11) вот. Ну хоть до чего-то докапались. Я в основном насчет &НаСервере vs &НаСервереБезКонтекста и говорил :D

(12) это и так понятно. 7.7/8.1 против 8.2 в режиме управляемого приложения (естессно конфы, разработанной с учетом всех методик и требований) просто беспощадные пожиратели трафика :!:
14. anig99 2724 30.11.10 08:09 Сейчас в теме
(13) а у меня просто чтение документации с практическим освоением было во времени разнесено. Понадеялся на правильность примера от 1с.
12. anig99 2724 29.11.10 23:37 Сейчас в теме
Если уж на то пошло, в обычном режиме форм общение с сервером наааамного больше.
15. detec 130 30.11.10 10:12 Сейчас в теме
Заголовок публикации претендует на какой-то технологический прорыв, а по сути - мелкое допиливание под собственные специфические нужды. Думаю, такое каждый сделает, смысл такое публиковать?

Думаю, выложить самописку с оригинальными техническими решениями на управляемом интерфейсе было бы гораздо полезнее.
16. anig99 2724 30.11.10 10:24 Сейчас в теме
(15) заголовок не претендует на технологический прорыв
По википедии

Тю́нинг (англ. Tuning — «настройка») — термин заимствованный из английского языка.
Тюнинг автомобиля — доработка (с целью улечшения потребительских качеств) автомобилей, как заводом-изготовителем, так и сторонними компаниями.
Тюнинг компьютера (моддинг) — доработка (с целью улечшения потребительских качеств) компьютеров и компьютерной переферии.

Публикация и дальше будет расширяться.
Зачем писать самописки, ссылаясь на неудобность универсального решения от 1с, если это универсальное решение парой строчек кода/функцией можно настроить под себя?
17. nafa 651 29.05.11 16:21 Сейчас в теме
По поводу Номер счет-фактуры совпадает с номером реализации - какие подписки на события??? Печатную форму счета-фактуры привязать к реализации, про счет-фактуру как отдельный документ забыть, как кошмарный сон.
18. anig99 2724 29.05.11 16:34 Сейчас в теме
(17) тогда ещё надо будет менять и книги продаж и покупок. Счет-фактуры не просто так в отдельные документы поместили.
19. nafa 651 29.05.11 17:01 Сейчас в теме
Уже давно книге покупок счет-фактура не нужен (по-моему даже в 7.7). А почему не сделано аналогично для книги продаж ? Правильно - ИБД.
Поручик; +1 Ответить
20. anig99 2724 29.05.11 19:06 Сейчас в теме
(19) Я предпочту написать 5-10 строк кода, чем ломать логику, которая пронизывает всю конфу и создавать новую печатную форму.
21. puzano-v 147 30.05.11 18:11 Сейчас в теме
Если конфигурация стоит на сопровождении - нельзя в нее вносить свои изменения ( практика ).
Если конфигурация Ваша, делайте все что хотите.
Странно, но все доработки на 1с7 работают по умолчанию.
Есть точки выхода на формы, документы, таблицы - используйте их.
22. anig99 2724 31.05.11 12:38 Сейчас в теме
(21) собственно сама тема публикации подразумевает, что стандартная конфа дорабатывается, а значит в ней включена возможность изменения. При этом вносимые изменения действительно минимальны и часто не касаются типового кода, а дополняют его, а значит не мешают обновлению. Использование внешних печатных форм и заполнялок табличных частей - это конечно хорошо, но я повторюсь - легче добавить 5-10 строк кода, чем ради этого писать собственную печатную форму и потом постоянно следить за её работоспособностью после обновлений.
23. prog3000 17.08.11 20:00 Сейчас в теме
Счет фактура
на 8.2 код работает с незначительным изменением
Если ЗначениеЗаполнено(ДокументОснование) И ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        СтандартнаяОбработка = Ложь;
        Номер = ДокументОснование.Номер;
КонецЕсли;


Спасибо
24. anig99 2724 17.08.11 21:48 Сейчас в теме
(23) странно. у меня на 8.2 работает в моей версии. Точный номер платформы?
25. prog3000 17.08.11 22:09 Сейчас в теме
27. musatov1c.ru 16.12.11 08:57 Сейчас в теме
Очень интересно. Оставляю ссылку для обязательного изучения :) Автору респект.
28. loginfo 19.06.12 12:26 Сейчас в теме
L.SetMainIcon(КаталогПрограммы()+"main.ico");

Хочу изменить иконку программы. кидаю иконку в папку и прописываю путь так: L.SetMainIcon("C:\...\mai.ico");
и иконка не меняется. Подскажите, как правильно прописать путь к иконке? Или нужно закинуть в определенную папку 1с?
29. anig99 2724 19.06.12 12:55 Сейчас в теме
(28) скорее всего опечатка в пути к иконке
30. loginfo 20.06.12 13:35 Сейчас в теме
31. Alex1Cnic 18.04.13 12:07 Сейчас в теме
Да, в принципе, неплохая статека... Но для использования упомянутыхв статье "фишек" опять же приходится вносить изменения в код типовой конфигурации, что по-моему не совсем удобно...
32. anig99 2724 18.04.13 14:20 Сейчас в теме
(31) ProFix, тут уж кому как. У меня в конфе есть изменения вынужденные, поэтому почему бы не сделать пару фишек для удобства
33. dwarkin 29.04.13 07:38 Сейчас в теме
так же можно в УТ 10.3.х.х, в модуле объекта Обработка.ПодборПараметровРасшифровкиПлатежа, Процедура СформироватьСписокДолговПоРегистру(ТабРасшифровка), строки 284-292 слегка подправить запрос:
    Если УчитыватьФактическиеЗадолженности Тогда
	ТекстОсновнойЗапрос=ТекстОсновнойЗапрос+"
            |	ТЧДокументаПлатежа.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
            |	ВЫБОР КОГДА (НЕ ТЧДокументаПлатежа.ДокументРасчетовСКонтрагентом=Неопределено)
            |	ТОГДА ТЧДокументаПлатежа.ДокументРасчетовСКонтрагентом.Дата
            |	КОГДА (ТЧДокументаПлатежа.Сделка<>Неопределено И ТЧДокументаПлатежа.Сделка<>NULL)  // <----
            |	ТОГДА ТЧДокументаПлатежа.Сделка.Дата
            |	ИНАЧЕ ТЧДокументаПлатежа.Ссылка.Дата Конец КАК ДатаВозникновения,";
    Иначе
Показать

....
тогда будет корректно получаться дата возникновения задолженности для Текущего документа, если тип Сделки выбран, а конкретно на документ не указали. Или скопировали документ расчетов.
34. apostal86 233 12.09.14 08:21 Сейчас в теме
35. pvlunegov 158 05.06.15 21:49 Сейчас в теме
anig99
Я к тебе в гости пожаловал.
Смотрю ты тут тоже крутые статьи пишешь.
А помнишь как ты меня лохом обзывал в моей статье, нахер посылал, угрожал, приказывал прекратить печать статей?

Ну что-ж оценим твои творения!

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

А вы собственно кто были в 2011? Такой же лох, который ни хрена не знал в 1с, как и я щас.

Все познается на своем опыте. Другие не виноваты что у вас его больше. Другие вовсе не дураки, как вы считаете.
ТО, что они делают статьи по-другому, вовсе не значит что они пишут просто так, ради того, чтобы написать.

Вот вы ради чего все тут развели?
Чтобы учить людей? Этой банальщине, как мне пишете?

Я простите, такую же банальщину пишу. Мы получается ничем не отличаемся, только тем, что я себя вежливо вел, а вы меня обосрали
36. anig99 2724 05.06.15 22:04 Сейчас в теме
(35) pvlunegov, в 2011 году я уже 5ый год САМОСТОЯТЕЛЬНО осваивал 1с. И ждал года 3 прежде чем публиковать что-то на ИС. И мои первые публикации тоже обсирали, но именно из-за их сырости.

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

Кроме того, эта публикация оформлена читаемо, несмотря на "ужасный" движок публикаций ИС.

Оставьте свое сообщение

См. также

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

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

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

10.12.2016    36819    unichkin    46    

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

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

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

27.01.2020    22264    ids79    26    

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

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

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

15.01.2020    20739    John_d    22    

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

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

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

13.01.2020    12785    aximo    14    

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

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

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

15.10.2018    29345    tormozit    100    

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

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

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

30.12.2019    15501    kuzyara    33    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    16302    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    7898    Sibars    19    

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

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

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

20.09.2012    77224    tormozit    131    

Создание асинхронных виджетов

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

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    12702    YPermitin    19    

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

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

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

01.10.2019    30375    Yashazz    50    

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

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

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

06.09.2019    44009    rpgshnik    63    

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

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

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

11.07.2007    47519    tormozit    40    

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

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

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

05.09.2019    45557    ids79    54    

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

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

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

05.09.2019    26271    YPermitin    24    

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

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

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

03.09.2019    24869    YPermitin    80    

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

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

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

10.09.2017    43877    tormozit    74    

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

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

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

17.08.2019    30134    ids79    16    

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

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

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

08.08.2019    72596    ids79    49    

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

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

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

02.08.2019    31734    avalakh    22    

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

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

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

25.04.2019    15861    m-rv    2    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    21684    json    13    

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

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

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

26.07.2019    53648    ids79    11    

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

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

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

17.07.2019    33917    ids79    27    

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

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

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

16.04.2019    19878    m-rv    17    

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

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

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

09.07.2019    25172    YPermitin    14    

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

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

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

04.07.2019    19304    SeiOkami    50    

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

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

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

25.06.2019    49067    ids79    25    

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

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

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

01.06.2018    30007    m-rv    21    

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

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

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

11.06.2019    23978    dmurk    144    

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

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

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

04.06.2019    39367    YPermitin    52    

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

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

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

16.05.2019    40496    YPermitin    30    

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

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

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

05.12.2017    28000    itriot11    34    

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

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

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

11.05.2019    28452    Eret1k    23    

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

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

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

07.04.2019    34320    ellavs    126    

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

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

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

28.03.2019    26593    ellavs    88    

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

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

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

27.01.2016    75539    Serginio    108    

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

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

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

14.03.2019    30437    YPermitin    53    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

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

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    21006    Vladimir Litvinenko    27    

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

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

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

03.02.2019    37052    ids79    9    

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

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

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

10.11.2018    33749    ids79    40    

EnterpriseData – часть 2. Процесс выгрузки данных

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

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    25810    ids79    31    

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

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

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

14.12.2018    39626    ids79    72    

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

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

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

25.07.2018    28894    grumagargler    28    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

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

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    35928    ids79    40    

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

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

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

13.11.2018    44230    Unk92    24    

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

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

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

03.09.2018    26988    nikita0832    42    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

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

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

04.09.2017    51828    m-rv    61