74 полезности из комплексного курса по конфигурированию 1С 8.2

29.12.12

Разработка - Механизмы платформы 1С

Курс прошел в октябре 2011 года. До этого уже была определенная подготовка (прочитал несколько книг, прошел несколько интернет-курсов и подготовился по вопросам к экзамену 1С: Профессионал по платформе 8.2). На этом курсе прошел обучение по 4 темам: основные объекты, оперативный учет, периодические расчеты и бухгалтерский учет. Хочу рассказать вам о том, что было не очевидно для меня. Надеюсь и вам пригодится.

Скачать исходный код

Наименование Файл Версия Размер
Презентация «Комплексный курс по конфигурированию в 1С»
.pptx 3,18Mb
45
.pptx 3,18Mb 45 Скачать
  • Основные объекты – изучали назначение объектов конфигурации 1С: Предприятия и тонкости при работе с ними.

1)      В случае прерывания соединения между веб-сервером и веб-клиентом, платформа дает 20 минут на восстановление соединения. В противном случае соединение разрывается.

2)      Запомнить сколько стоит серверные ключи 1С очень легко. На 32-х битный процессор цена – 32 тысячи, на 64-х битный – 64 тысячи.

3)      Тип «Неопределено» означает что это пустое значение неопредленного типа.

4)      Тип «NULL» означает НИЧЕГО ВООБЩЕ. Даже нет пустой ссылки.

5)      Структура(Ключ, Значение) от Соответствие(Ключ, Значение) отличается тем, что структура может хранить ключ только в строковом типе, а соответствие – в произвольном.

6)      Чтобы выбрать определенный реквизит в цикле, нельзя обращаться так: Наим = Спр.Наименование + МояПеременная. Зато можно обращаться так Наим = Спр[“Наименование” + МояПеременная].

7)      Если использовать двойную (или больше) конструкцию, в которой получается один объект за другим, от этого 1С тормозить не будет. Не нужно для этого создавать дополнительных промежуточных переменных. Пример использования: Док.Контрагенты.ПолучитьОбъект().ПечатьКарточкиКлиента();

8)      Если в управляемой форме у какого-либо реквизита тип данных написан в скобочках, это означает что этот тип преобразован с данных сервера. Обычно это тип «ДанныеФормыСтруктура». В этих случаях для чтения и записи необходимо использовать встроенные функции «ДанныеФормыВЗначение(,)», «ЗначениеВДанныеФормы(,)», РеквизитФормыВЗначение(,)», «ЗначениеВРеквизитФормы(,)».

9)      В свойстве «Параметры выбора» любого реквизита можно задавать множество параметров, которые будут наложены

10)  Объект «План видов характеристик» нужен для того, чтобы если пользователь указал определенную характеристику (например Вес), он не смог выбрать значение типа, отличного от выбираемого (например ДатаИзготовления).

11)  В реквизите типа «ХранилищеЗначения» можно хранить что угодно. Даже образы DVD дисков с фильмами.

12)  В СКД источники данных работают только в 14 релизе платформы.

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

 

  • Решение оперативных задач – решали задачи складского учета и вывода оперативных отчетов с помощью системы компоновки данных (СКД).

1)      СКД в 1С – это 3-е поколение конструкторов отчетов.

2)      Прежде чем реализовывать какую-либо систему в 1С, правильнее (подход практически всех профессиональных разработчиков) идти по схеме разработки сверху вниз. Т.е.:

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

3)      В любом документе на вкладке «Движения» в свойстве «Удаление движений» штатное положение «Удалять автоматически при отмене проведения». В зависимости от потребности необходимо использовать «Удалять автоматически» (чтобы движения автоматически перезаписывались) или «Не удалять».

4)      У каждого документа есть свойство «Движения». Оно позволяет обращаться через точку к наборам записей регистров, подчиненых данному документу как на чтение, так и на запись.

5)      Определение типа движения регистра накопления (Приход-Расход) легче выполнять согласно правилу «нулевой позиции». Рассмотрим это на примере регистра накопления «ЗадолженностиКонтрагентов». Мысленно представляем себе точку с нулем (состояние когда никто никому ничего не должен). Если было 0 долгов, то документ «Расходная накладная» должен долг повышать - тип движения Приход. А документ «Приходный кассовый ордер» должен наоборот уменьшать долг (деньги-то нам вернули!) и тут тип движения – расход.

6)      Решали задачу по бронированию товаров от продажи другими клерками

7)      У любого регистра накопления и у регистра сведений с режимом записи «Подчинение регистратору», когда программно записываем движение, обязательно надо добавить отбор по регистратору:

НаборЗаписей = РегистрыНакопления.бронированиеТоваров.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.Установить(ТекДок);

8)      Чтобы добавить общую команду, которая будет доступна в нескольких формах одного и того же документа, можно создать подчиненный документу объект типа «Команда.

9)      Также в платформе есть возможность добавлять произвольные «Группы команд», которые затем можно отображать на формах. Например группа команд «Печать».

10)  В критерии отбора в запросе можно писать такое условие:

(Номенклатура, Склад) В  (ВЫБРАТЬ Номенклатура, Склад ИЗ Справочники.Номенклатура ГДЕ ….)

Т.е. по сути проверять вхождение нескольких полей в выборку.

11)  Рассмотрели как правильно использовать временные таблицы в запросах с помощью конструктора запроса, без принудительного использования менеджера запросов.

12)  Решить задачу устранения дублей строк на экзамене 1С: Специалист можно с помощью примерно следующего запроса:

ВЫБРАТЬ

ПродажаТоваровТовары.Номенклатура КАК Номенклатура,

СУММА(ПродажаТоваровТовары.Количество) КАК Количество,

ПродажаТоваровТовары.Ссылка.Склад КАК СКЛАД

            ИЗ

                        Документы.ПродажаТоваров.Товары КАК ПродажаТоваровТовары

ГДЕ

                        ПродажаТоваровТовары.Ссылка = &Ссылка

            СГРУППИРОВАТЬ ПО

                        ПродажаТоваровТовары.Номенклатура

                        ПродажаТоваровТовары.Склад

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

14)      В отборе виртуальных таблиц нельзя использовать отбор по дате документы. Нужно использовать метод документа МоментВремени().

15)       Проблема копеек (когда рассчитывается средняя себестоимость, товара на складе осталось 5 шт на сумму 100,56 руб., а при списании заново рассчитывается средняя и в итоге может получиться что на складе осталось товаров 0 шт на сумму 0,03 руб.) при проверке остатков решается следующим образом:

Если КоличествоСписываемого = КоличествоНаСкладе Тогда

            СуммаСписания = СуммаНаСкладе

КонецЕсли

16)      Новая методика проведения заключается в том, что проверка остатков выполняется после записи движений в регистр в транзакции. После того как движения записаны, в коде проверяем – не стало ли остатков меньше нуля, и если стало, то откатываем транзакцию и выдаем пользователю сообщение об ошибке.

17)      У каждого документа в его модуле можно использовать свойство «Ссылка», которое хранит в себе ссылку на текущий документ

18)      Установить отбор в условии запроса на только проведенные документы можно следующим образом (в условиях запроса, произвольное условие):

ПродажаТоваровТовары.Ссылка.Проведен

19)       В консоли запросов, в параметрах запроса «В» означает Выражение и практически никогда не используется.

20)      Отладчик сам спихивает точку останова с комментария на ту, где можно остановиться.

21)      Подчищать временные таблицы надо не всегда. А только если используется 7-этажный запрос и первая временная таблица не нужна. Иначе особого прироста скорости не заметишь.

22)  Сообщение пользователю можно выводить возле поля(свойство «Поле» у объекта СообщениеПользователю).

 

  • Решение расчетных задач – решали сложный сквозной пример (2,5 дня) по расчету заработной платы с формированием документов о начислениях, отчислениях, перерасчетах. В том числе кадровые документы приема и увольнения сотрудников.

1)      Зависимость по периоду регистрации используется для удержаний (например алиментов)

2)      Не зависит – то что не имеет зависимости от базы (расчет премии суммой)

3)      По периоду действия – любые начисления, зависящие от базы.

4)      Чтобы проверить какое-то поле на NULL, нужно написать:

ГДЕ ИмяПоля ЕСТЬ NULL

5)      У Николая Больсунова есть программа «Менеджер по сворачиванию в трей», в которую встроена программка, приводящая примерный блок текста:

НоваяСтрока.Наименование =  ПолноеНаименованиеВерсии;

НоваяСтрока.ПолныйПуть = АдресВременногоХранилища;

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

НоваяСтрока.ДобавленИзШаблона = Истина;

 

В следующий (т.е. расставить равно по масимальной позиции)

НоваяСтрока.Наименование               =  ПолноеНаименованиеВерсии;

НоваяСтрока.ПолныйПуть                  = АдресВременногоХранилища;

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

НоваяСтрока.ДобавленИзШаблона    = Истина;

 

Работает она с буфером обмена (копируем текст, нажимаем Alt =, вставляем текст)

 

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

1)      Дебет – приход, а кредит – расход (для организации)

"Страшная правда" состоит в том, что дебет не всегда "плюс", соответственно кредит не всегда "минус". Это справедливо только для активных счетов (грубо говоря, то, что можно потрогать руками), для пассивных (наши обязательства) все наоборот, их сальдо увеличивается по кредиту, а уменьшается по дебету. Получается, что, например, в проводке Дт 70 - Кт - 50 - 20000 руб., сальдо уменьшится у обоих счетов, хотя один из них стоит в дебете.

(Спасибо Филину за это)

2)      Актив – это имущество предприятия. Пассив – это то, что бухгалтерия кому-либо должна (в т.ч. хозяину предприятия)

3)      Забалансовые счета – это те, у которых нет корреспондирующих счетов

4)      В условиях запроса чтобы включить «опциональное условие», пишем:

&Параметр ИЛИ НЕ КакоеТоСвойство

Таким образом сработает или левая или правая часть условия.

5)      Во всех отчетах рекомендуется добавлять поле «Период» типа «СтандартныйПериод». А у стандартного поля «НачалоПериода» в поле «Выражение» прописать «&Период.ДатаНачала». А у стандартного поля «КонецПериода» в поле «Выражение» прописать «&Период.ДатаОкончания»

6)      В СКД «Группировка заголовок» – это строка с данными, а «Заголовок группировки» - это HEAD таблицы.

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

8)      Один отчет с несколькими макетами в СКД делается так:

Во вкладку «Макеты» закидываем все возможноые макеты (один под другим в таблице)

Добавляем варианты отчетов. В них именуем поля как В1_ИмяПоля, В2_ИмяПоля и т.п.

Потом в макете добавляем группировки по полям В1_ИмяПоля, В2_ИмяПоля и т.п.

Так можно было решить мою задачу при создании планов работ с фиксированным макетом в одном отчете но с разными вариантами на СКД в 1С: Документообороте.

9)      Использование в запросе ВЫРАЗИТЬ(Поле КАК Тип) позволяет убрать лишние таблицы из соединения с полем составного типа данных. Тем самым ускорить выполнение запроса.

10)  Козырев Дмитрий посоветовал прочитать статью с диска ИТС->Методическая поддержка-> Технологические вопросы -> «Технологические вопросы крупных внедрений». В ней описываются различные подходы для ускорения работы системы.

11)  В условиях виртуальной таблицы по регистру бухгалтерии в условие «Субконто» нужно передавать список необходимых субконто в параметре вида &ВидыСубконтоНС. Где буква Н – означает номенклатура, С – склады. Таким образом платформа автоматически переупорядочит виды субконто по тому списку значений, который мы передали в параметре. Причем в реальной таблице один и тот же субконто мог бы находится в любом субконто (1,2,3).

12)  Копирование сохраненных настроек отчетов для всех пользователей можно взять из БСП. А так во всех типовых конфигурациях сейчас настройки будут хранится в справочнике НастройкиПользователей или ПользовательскиеНастройки.

13)  Актив баланса – нам должны. Пассив баланса – мы должны.

14)  В СКД поле «Роль» в схеме комп-ки данных: флажок «Обязательное» позволяет в любом случае выводить в результате запроса указанное поле. Причем в сам отчет это поле может не попадать. Это можно использовать для различных соединений и объединений таблиц БД.

15)  А поле «Игнорировать значения NULL» будет отсекать записи, в которых указанное поле содержит NULL. При этом настоятельно рекомендуется в запросе всегда использовать функцию ЕСТЬNULL()

16)  Если в ресурсе отчета СКД, в поле «Рассчитывать по…» ничего не указано, это значит что ресурсы (Итоги) будут рассчитываться по всем полям.

17)  Проверку деления на 0 в СКД не обязательно писать, т.к. СКД напишет текст в ячейке: «Деление на 0».

18)  Автоупорядочивание в запросе сильно тормозит процесс. Если сортировка не нужна, лучше вообще ее не использовать.

19)  Все запросы к остаткам правильно делат ьне на Дату документа, а на его МоментВремени().

20)  Чтобы было меньше заморочек при создании пакетного запроса, можно создать новый пакетный запрос и переместить его перед созданным ранее на закладке «Пакет запросов» с помощью стрелок.

21)  Поля по которым будет производится соединение в запросе, рекомендуется индексировать (ИНДЕКСИРОВАТЬ ПО). Запрос будет выполняться гораздо быстрее.

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

23)  В запросах конструкция «ДЛЯ ИЗМЕНЕНИЯ» используется чтобы установить автоматическую блокировку и на запись и на чтение (аналог режима Исключительный в управляемых блокировках).

24)  Режимы управляемой блокировки данных: Разделяемый – не блокирует на чтение др. пользователям. Исключительный – напрочь блокирует и от записи и от чтения.

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

26)  При файловом режиме работы БД, во время транзакции автоматически блокируется вся таблица. Управляемые блокировки ставь-не ставь, не действуют вообще.

27)  Чтобы узнать какой сейчас используется режим работы:

Если Найти(СтрокаСоединенияИнформационнойБазы(), “Srvr=”) > 0 Тогда

      // Это означает что сейчас мы находимся в клиент-серверном режиме

КонецЕсли;

28)  Движения.Проводки.БлокироватьДляИзменения – накладывает управляемую блокировку.

29)  Новый механизм проведения документов заключается в следующем – списание себестоимости выполняется регламентным заданием.

30)  Тонкий клиент (программа 1С) может работать и через Web-соединение к серверу.

31)  CTRL + “–“ на символьной клавиатуре – возврат к объявляемому методу, от которого мы переходили к его описанию по кнопке F12.

32)  Модуль набора записей используется для каждой проводки документа (записи движения).

33)  Лучше всего (для людей) в книге «Руководство разработчика 1С: 8.2» описана глава по работе с Запросами. Козырев Дмитрий советует ее прочитать.

34)  ALT + “–” используется для закрытия окна в конфигураторе (и некоторых других действий)

Гончаров Дмитрий постоянно приводил смешные аналогии из жизни автоматизаторов:

1)      По поводу профессии 1С разработчика:

Есть такая профессия – Родину Автоматизировать!

2)      По поводу вызова серверных процедур с контекстом или без контекста:

Без контекста: Звонок в бухгалтерию. Деньги есть? – Есть. – Принесите мне их пожалуйста.

С контекстом: Тот же звонок. Деньги есть? – Есть. Положил трубку, поднял весь свой контекст с кресла и пошел в бухгалтерию за деньгами.

3)      По поводу сложных для усвоение материалов по разработке в 1С:

С этой мыслью надо переспать. И желательно не одну ночь.

4)      По поводу того, как конструктор запроса постоянно делает ЛЕВОЕ соединение таблиц (и меняет их местами), как бы мы не указывали ПРАВОЕ:

1С:Предприятие любит «налево».

 

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

На курсе каждому выдали комплект методичек (4 книги) с общим количеством страниц 800. Рекомендую пройти этот курс всем программистам 1С.

По окончании курса получил свидетельство № 2110063533815 от 21.10.2011. 

Также во время командировки я выполнил свою цель – успешно сдал сертификационный экзамен «1С:Профессионал на знание основных механизмов платформы 1С: Предприятие 8.2».

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2663    dsdred    16    

59

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    6167    dsdred    59    

86

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    6048    YA_418728146    25    

68

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    7131    dsdred    36    

114

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19238    SeiOkami    46    

119

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12962    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    9557    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

20.08.2023    6577    sebekerga    54    

95
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Незнайка 204 02.03.12 01:37 Сейчас в теме
Прикольно.Молодец. Легко читалось.
76. Flashill 994 02.03.12 16:22 Сейчас в теме
(1) Незнайка, (2) Angeros, (4) 8SiriuS8, (6) Новиков, большое спасибо за приятные слова.

(6) Новиков, я работаю программистом 1С. В основном занимаюсь доработками 1С: Документооборота. Время от времени делаю отчеты и небольшие обработки для УПП. Знания действительно пригодились. Курс вселил уверенность в своих силах, я полностью проникся гибкостью разработки на 1С.

(7) Yury1001, спасибо за отзыв!
По поводу типа Неопределено:
В 1С есть очень много типов. Например СправочникСсылка.Номенклатура, ДокументСсылка.ПриходнаяНакладная, Строка, Число, Булево и т.п. Запомнить что такое Неопределено довольно просто:
Неопределено - значит тип неопределен + значение пустое. Это как тип СправочникСсылка.Номенклатура.ПустаяСсылка(), только без указанного типа. Можно представить как Неопределено.ПустаяСсылка(), или пустое значение. А тип NULL - это ничего ВООБЩЕ.

(8) Василий Казьмин, (9) garik79, Гончаров и Габец перед началом занятий опросили всех - кто работал на 8.2? На 8.1? На 7.7? Были и те кто вообще никогда не работал с 1С. Они можно сказать впитали только основы. Новичкам я бы порекомендовал съездить на комплексный курс только после прочтения и проделывания всего что написано в книге Радченко - "Практическое пособие разработчика". Сам читал два раза (первый раз по 8.1), и во второй раз находил для себя новые вещи.
11. alon 171 03.03.12 00:07 Сейчас в теме
Запомнить сколько стоит серверные ключи 1С очень легко. На 32-х битный процессор цена – 32 тысячи, на 64-х битный – 64 тысячи.

Неа, еще проще: 32бит - 42000, 64бит - 72000 :)))
12. pumbaE 03.03.12 12:09 Сейчас в теме
Молодец, хороший конспект получился.

5) У Николая Больсунова есть программа «Менеджер по сворачиванию в трей», в которую встроена программка, приводящая примерный блок текста:

Если честно: прочитав этот текст, ухмыльнулся и в тоже время стало печально.
Прикрепленные файлы:
13. Flashill 994 03.03.12 19:18 Сейчас в теме
(12) pumbaE, что за макросы? Или это обработка Снегопат?
14. pumbaE 03.03.12 19:48 Сейчас в теме
(13) Flashill, снегопат. Печально, что 1С не развивает конфигуратор для программистов.
15. romansun 193 04.03.12 16:59 Сейчас в теме
неплохой faq вышел :).. можно много чего добавить, но пока напишу вот такую тему

17) У каждого документа в его модуле можно использовать свойство «Ссылка», которое хранит в себе ссылку на текущий документ


у каждого объекта можно использовать "Ссылка".

"Ссылка" - это физически записанный объект в базу, а
"ЭтотОбъект" - это незаписанный еще в базу объект, на данный момент он только в памяти

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

"Если НЕ Ссылка.ПометкаУдаления и (Ссылка.ПометкаУдаления <> ЭтотОбъект.ПометкаУдаления) Тогда" - значит пометили... и наоборот
Flashill; odin777; jONES1979; +3 Ответить
24. Flashill 994 07.03.12 22:28 Сейчас в теме
(15) romansun, теперь я уже знаю что в модуле каждого объекта можно обращаться ко всем реквизитам, ресурсам, измерениям, стандартным реквизитам объекта. И все к чему обращаетесь будет возвращать данные ТЕКУЩЕГО объекта, с которым сейчас ведется работа.

(18) wolfsoft,
Чем новая методика проведения лучше:
- Нет необходимости соединять в запросе таблицу документа и данными регистров
- Не надо производить проверку на NULL
- Нет необходимости получать излишние данные (остатки) для проведения документа. Ведь мы чаще все же записываем документ с правильными цифрами и он проводится, чем документы которые уводят остатки в минус.

(19) Diego_Iv, я рад что пригодилось.

(20) KulSer, да этот 6 пункт (и еще пару подобных) я сохранял себе как напоминание о том какой раздел мы смотрели в методичке по курсу. Рекомендую съездить на курс. Там сможете и подробно ознакомиться с решением данной задачи.

(21) Филин, спасибо за разъяснения. Внес в статью.

(22) bulpi,
1) план видов характеристик.
2) Укажите пожалуйста ляпы, я исправлю статью.

(23) Yashazz,
1) Конечно же по одной моей статье не научишься. Надеюсь вы понимаете, что я не записывал известные мне факты, а только то, что было новым.
2) Вы наверное уже опытный разработчик, если нашли в статье мало полезного. Тем не менее, я рад что помог найти вам хоть что-то новое.
3) Я тоже видел в типовых ошибки и куски кода которые можно написать лучше. Но ведь там и есть чему поучиться. Если вы можете предложить источник лучше, предлагайте.
Invis91; wolfsoft; +2 Ответить
31. wolfsoft 2421 12.03.12 14:12 Сейчас в теме
(24) Flashill, в целом про новый контроль остатков понятно, спасибо. Основной выигрыш, насколько я понял, даёт тот факт, что мы получаем из БД лишь отрицательные остатки товаров, а не все остатки по всем товарам, находящимся в табличной части документа. В общем случае это, вероятно, будет работать быстрее.
16. romansun 193 04.03.12 17:31 Сейчас в теме
(10)

по поводу неопределено и прочих нулов

тут, имхо, проще исходить от физических таблиц sql

ПустаяСсылка, как и обычная Ссылка, это просто 16-ное число. ПустаяСсылка = это 0х000.. (32 нуля). Сами по себе 32 нуля будут равны другим 32 нулям, конечно, но, видимо, метод ПустаяСсылка возвращает нам "типизированные 32 нуля" :)

NULL - это в нашем случае исключительно SQL-ное понятие. Т.е. средствами кода 1С получить null вы не сможете. Только запросом. Ну, а в запросах это просто обозначение полей, не содержащих никаких значений. К примеру, в результате left join (ЛЕВОЕ СОЕДИНЕНИЕ). На вики хорошо про это написано.

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

Null-литерал, Пустое значение — особый тип литерала, в зависимости от языка программирования, относящийся к ссылочному либо объектному типу. Единственное допустимое значение этого типа литералов null, или аналог, например NIL, None, Nothing — ссылка никуда не ведёт либо объект отсутствует.
В случае с 1С аналог Undefined (неопределено).

Почитать можно тут и тут
valentjedi; +1 Ответить
48. a-novoselov 1155 09.06.12 14:31 Сейчас в теме
(16) Все же Null и Неопределено - разные вещи. Null - отсутствие значения, Неопределено - значение есть, но оно = Неопределено. Например, по умолчанию, значение "Неопределено" принимают все поля составного типа (до выбора типа значения, после выбора - ВыбранныйТип.ПустаяСсылка()). Т.е. значение все же есть, но оно пока совсем-совсем пустое. Null же - отсутствие значения, возникает в запросах, когда по левому соединению таблиц в правой таблице записи просто отсутствуют.

Пример:

Есть справочник Контрагенты, подчиненный ему справочник ДоговорыКонтрагентов, и в справочнике договоров есть реквизит "Филиал" составного типа.
Есть запрос вида:
ВЫБРАТЬ
	Контрагенты.Ссылка КАК Контрагент,
	ДоговорыКонтрагентов.Филиал КАК Филиал
ИЗ
	Справочник.Контрагенты КАК Контрагенты
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		ПО Контрагенты.ОсновнойДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка
ГДЕ
	ДоговорыКонтрагентов.Ссылка = &Контрагент
Показать

Так вот если у контрагента основной договор заполнен, но в договоре не выбран филиал, то в результате запроса во второй колонке результата будет значение "Неопределено". А если же у контрагента не заполнен основной договор (левое соединение не срабатывает), то во второй колонке результата запроса будет "Null".
Flashill; +1 Ответить
17. bulas 212 07.03.12 08:35 Сейчас в теме
Природа не терпит пустоты вот и существует NULL.
18. wolfsoft 2421 07.03.12 09:11 Сейчас в теме
> Новая методика проведения заключается в том, что проверка остатков выполняется после записи движений в регистр в транзакции. После того как движения записаны, в коде проверяем – не стало ли остатков меньше нуля, и если стало, то откатываем транзакцию и выдаем пользователю сообщение об ошибке.

Кто-нибудь может аргументированно объяснить смысл "новой методики"?


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

Поржал... Эти "настоящие" ещё в 7.7 проценты с рублями складывали в типовых - редкие ... "специалисты".
19. Diego_Iv 34 07.03.12 10:42 Сейчас в теме
Классно!
Большая часть информации вроде знакома.
Но такой удачный подбор в одном месте встречается впервые.
20. KulSer 07.03.12 10:48 Сейчас в теме
Впечатление от публикации двойственное. Упоминаемые в заголовке "полезности" в некоторых случаях действительно полезны, а другие ни о чём не говорят. Например, "6) Решали задачу по бронированию товаров от продажи другими клерками". Ну решали, и что? Видимо у автора имеются какие-то воспоминания/впечатления, связанные с этой задачей, но он ими не поделился.
Тем не менее, ставлю плюс.
21. Филин 364 07.03.12 12:37 Сейчас в теме
Хороший конспект, много полезных нюансов, особенно для новичков. Только одна просьба: поправьте момент про дебет и кредит, пока никого не успели сбить.

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

Получается, что, например, в проводке
Дт 70 - Кт 50 - 20000 руб. 

сальдо уменьшится у обоих счетов, хотя один из них стоит в дебете.
22. bulpi 215 07.03.12 15:03 Сейчас в теме
"10) Объект «План видов характеристик» нужен для того, чтобы если пользователь указал определенную характеристику (например Вес), он не смог выбрать значение типа, отличного от выбираемого (например ДатаИзготовления)."


И что ? Только для этого есть целая ветка в конфигураторе ? :)))))

Много ляпов. Не понравилось. Но минус ставить не буду. Пипл же хавает :)
23. Yashazz 4727 07.03.12 20:01 Сейчас в теме
Галопом по европам. Классический пример сваливания всего в одну кучу, торопливого конспекта. Баянов очень много. Внимательное чтение доступных методических материалов, от ИТС до Дев-трейна, даст вдвое больше знаний.
Кроме того, некоторые вещи действительно способны ввести в заблуждение новичка, как верно замечено в (22).

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

Нет единого источника, нет питомника гуру. Надо смотреть и учиться всюду, сопоставлять разные ресурсы.
25. krund 10.03.12 13:34 Сейчас в теме
Интересный вариант. Автор молодец
26. shekl 11.03.12 09:41 Сейчас в теме
легко читалось)
многие казалось бы очевидные вещи, но в работе не всегда вспоминаются .
мне понравилось спасибо.
27. ms200999 12.03.12 08:44 Сейчас в теме
27) Чтобы узнать какой сейчас используется режим работы:

Если Найти(СтрокаСоединенияИнформационнойБазы(), “Srvr=”) > 0 Тогда

// Это означает что сейчас мы находимся в клиент-серверном режиме

КонецЕсли;


Ну, скорее всего, это действительно так. :)
Прикрепленные файлы:
krv2k; hotey; Flashill; +3 Ответить
28. Tommy1987 5 12.03.12 09:14 Сейчас в теме
Есть интересные факты, но по большей части из разряда "Спасибо, кэп"
29. Zas1402 12.03.12 13:55 Сейчас в теме
На курсах был дважды 7.7 и 8.1 Комплексные. Подводных камней раскрывается много, но без знаний на курсах делать нечего.

Согласен
30. kng67 12.03.12 14:07 Сейчас в теме
Что за курс Вы проходили?
Курсы 4-х дневка по 1С 7.7 меня разочаровали. Собираюсь пройти курсы дистанционно плюс литература. Ваши "полезности" возьму себе на заметку. Авось пригодятся, когда "поумнею". :)
34. Flashill 994 12.03.12 17:12 Сейчас в теме
32. nataon 12.03.12 16:09 Сейчас в теме
спасибо, скрупулезный труд
33. warenic 109 12.03.12 16:57 Сейчас в теме
В целом - нормально. Поработал человек, систематизировал, выводы делал.
Внесу свои 5 копеек в уточнения
2) Актив – это имущество предприятия. Пассив – это то, что бухгалтерия кому-либо должна (в т.ч. хозяину предприятия)
Пассив - это источник (откуда взялись активы).
valentjedi; Flashill; +2 Ответить
35. llAjaxll 12.03.12 19:44 Сейчас в теме
Проблема копеек (когда рассчитывается средняя себестоимость, товара на складе осталось 5 шт на сумму 100,56 руб., а при списании заново рассчитывается средняя и в итоге может получиться что на складе осталось товаров 0 шт на сумму 0,03 руб.) при проверке остатков решается следующим образом:

Если КоличествоСписываемого = КоличествоНаСкладе Тогда

СуммаСписания = СуммаНаСкладе

КонецЕсли



Нас научили другой хистрости, в 1с арифметические действия делаются слева на право. Поэтому себестоимость можно сделать так : СуммаОстаток * Количество / КоличествоОстаток такой формулой дробных записей не будет.
36. Flashill 994 13.03.12 05:54 Сейчас в теме
(35) llAjaxll, интересная информация по проблеме копеек есть в статье Несколько рекомендаций готовящимся к 1С:Специалист по Платформе:

7. Правильный порядок расположения операндов при расчете себестоимости. Проблема копеек. Есть мнение, что правильно делать так:
НоваяЗапись.Сумма = Выборка.КоличествоДокумент * Выборка.СуммаОстаток / Выборка.КоличествоОстаток;

То есть, умножение идет перед делением, что обеспечит в случае 3 * 10 / 3 число 10 а не число 9.99999999(9), как может быть при совсем неправильном порядке, однако методически такой способ не считается верным (это слова преподавателя из 1С), во-первых, деление по методике должно идти сначала, но деление не суммы на остаток количества, а количества к списанию на количество остатка, во-вторых, при равенстве количеств, лучше просто взять сумму, поэтому делая так, как ниже, проблем быть не должно:

НоваяЗапись.Сумма = ?(Выборка.КоличествоДокумент = Выборка.КоличествоОстаток, Выборка.СуммаОстаток,
Выборка.КоличествоДокумент / Выборка.КоличествоОстаток * Выборка.СуммаОстаток);

37. llAjaxll 13.03.12 07:19 Сейчас в теме
(36) Flashill, Именно это я и хотел сказать :)
38. рибак 14.03.12 12:55 Сейчас в теме
удачный подбор, прочитал на одном дыхании, узнал кое-чего нового.
47. Flashill 994 08.04.12 17:23 Сейчас в теме
(38) рибак, спасибо! Рад что мои знания пригодились и вам!
(39) kurvik, спасибо! Разумеется помогло :)
(40) catena, спасибо за конструктивную критику!
(42) mikhailovaew, все верно. Это мои заметки с курса.
(43) daho, (44) alcoholic, спасибо!
(46) Little-ann, спасибо! Мне тоже очень нравятся уроки Гилёва и Насипова. Сейчас вышли 2 интересных курса: "1С Программист. Быстрый старт в профессию" и курс по подготовке к 1С: Специалист по платформе 8.2.
39. kurvik 14.03.12 18:19 Сейчас в теме
Нормально! Такая скурпулезность помогает разобраться во всех тонкостях платформы и типовых конфигурациях. Хороший конспект-пригодиться. Я еще записывал маленькие презентации для себя . Очень помогает контекст понять истину.

Плюс ставлю к твоей публикации.Вот помогло ли все это в практических делах.
40. catena 110 15.03.12 11:16 Сейчас в теме
Если претендовать на некий реестр полезностей, может все-таки структурировать и почистить повторы?
Например, пункт
2) Прежде чем реализовывать какую-либо систему в 1С, правильнее (подход практически всех профессиональных разработчиков) идти по схеме разработки сверху вниз. Т.е.:

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


Не совсем вписывается в раздел про СКД.

17) У каждого документа в его модуле можно использовать свойство «Ссылка», которое хранит в себе ссылку на текущий документ

Аккуратнее, перед записью нового объекта она еще пуста, а перед записью старого содержит предыдущие данные. Можно нарваться, например, при проверке реквизитов.

19) В консоли запросов, в параметрах запроса «В» означает Выражение и практически никогда не используется.

Почему это?

20) Отладчик сам спихивает точку останова с комментария на ту, где можно остановиться.

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

9) Использование в запросе ВЫРАЗИТЬ(Поле КАК Тип) позволяет убрать лишние таблицы из соединения с полем составного типа данных. Тем самым ускорить выполнение запроса.

А еще типизировать таблицу результата.
Flashill; +1 Ответить
41. catena 110 15.03.12 11:19 Сейчас в теме
А, ну да, еще пропустила:

31) CTRL + “–“ на символьной клавиатуре – возврат к объявляемому методу, от которого мы переходили к его описанию по кнопке F12.

Или вернуться к предыдущему окну, вообще шагает назад по коду и окнам :)
42. mikhailovaew 127 19.03.12 11:44 Сейчас в теме
Не понравилась система подачи материала, точнее, ее отсутствие. Это какие-то "заметки на полях", а не полноценная публикация. Строго ИМХО.
43. daho 8 20.03.12 14:34 Сейчас в теме
Зато освежает память... не много не мало..
44. alcoholic 22.03.12 19:05 Сейчас в теме
полезная информация, довольно полезная штука!
45. пользователь 26.03.12 17:24
Сообщение было скрыто модератором.
...
46. Little-ann 15 28.03.12 10:09 Сейчас в теме
Отличная статья! Сейчас как раз в процессе обучения у Жени Гилева и Фарита Насипова. Ложками черпаю разную информацию по 1С. Эта вполне себе полезная. С 1С вообще начала разбираться сама с нуля, сидя в декрете и понимая что прежняя работа не вызывает желания развиваться. И вот через полтора года уже есть и свои клиенты, и багаж знаний копится. В том числе благодаря желающим поделиться накопленным. То есть таким как Вы!
49. tango 542 09.06.12 14:45 Сейчас в теме
Козырев Дмитрий молодец.
50. alena_a 25.06.12 14:04 Сейчас в теме
2) Актив – это имущество предприятия. Пассив – это то, что бухгалтерия кому-либо должна (в т.ч. хозяину предприятия)

Чтож Вы так про бухгалтерию то. Вечно она кому-то что-то должна :)
А вообще, как уже писали выше:
Пассив - это источник (откуда взялись активы).



13) Актив баланса – нам должны. Пассив баланса – мы должны.

Т.е. Основные средства, Запасы и прочее должны нам? и кто же?
а Уставный капитал и Собственные акции мы? опять же, кому?
Слишком Вы обобщили.
51. valentjedi 24.07.12 08:59 Сейчас в теме
Я сейчас как раз готовлюсь к сдаче профессионала по платформе. Надеюсь, эта информация мне поможет.
Присоединяюсь к выше отписавшимся с просьбой о структурировании материала, а также к благодарностям.
52. Flashill 994 24.07.12 10:22 Сейчас в теме
(51) valentjedi, к сдаче профессионала по платформе больше поможет сборник вопросов и ответы на него на форумах.
Эта статья больше даст знаний тем кто либо хочет закрыть пробелы, либо идет на специалиста по платформе.
valentjedi; +1 Ответить
53. FLancer 27.07.12 00:16 Сейчас в теме
В "Решение бухгалтерских задач" с п.2 относительно Пассива бухгалтерия будет категорически не согласна, так как она, сама по себе, никому и ничего не должна.
А правильное определением понятия Пассив будет таким - это источники происхождения имущества (капитал и кредиторские задолженности)
54. IvOlka 01.08.12 11:25 Сейчас в теме
Полезная статья! Кратко и по сути!
55. Gotcha 5 08.08.12 10:47 Сейчас в теме
1) Забалансовый счет - это счет, не корреспондирующий с балансовыми счетами.
С забалансовыми счетами он может корреспондировать.
2) Насчет Активных и пассивных счетов - есть еще и Активно-Пассивные счета.
56. wowkai 4 01.09.12 13:02 Сейчас в теме
отправил на печать. спасибо!
57. ShantinTD 91 15.10.12 10:25 Сейчас в теме
Помещаю ссылку на Вашу статью сюда.
Интерес - полезность номер 16.
58. Altair777 644 16.10.12 13:02 Сейчас в теме
(0)

> 6) Решали задачу по бронированию товаров от продажи другими клерками
и какая тут для нас полезность?

> 17) У каждого документа в его модуле можно использовать свойство «Ссылка», которое хранит в себе ссылку на текущий документ
Такое свойство есть, но оно не всегда хранит в себе ссылку на текущий документ. Кстати, а на этом курсе не рассказывали, что такое свойство есть не только у документа?

> 2) Актив – это имущество предприятия. Пассив – это то, что бухгалтерия кому-либо должна (в т.ч. хозяину предприятия)
> 13) Актив баланса – нам должны. Пассив баланса – мы должны.
это для тупых? 2 раза одно и то же

> 3) Забалансовые счета – это те, у которых нет корреспондирующих счетов
Забалансовые счета не могут корреспондировать с балансовыми, а между собой, в принципе, могут.

> 25) Козырев Дмитрий рекомендует изучать типовые конфигурации, чтобы понять как пишут конфигурации настоящие специалисты.
ыыыы..... но коммент!
59. _LEV_ 16.11.12 10:23 Сейчас в теме
Я бы рекомендовал пройти лучше курс по программированию у Насипова, багаж знаний будет значительно отличаться.. в лучшую сторону. Жаль он пока сертификаты не выдает, но его получить в 1С не составит труда.
60. makas 44 06.12.12 12:05 Сейчас в теме
Запомнить сколько стоит серверные ключи 1С очень легко. На 32-х битный процессор цена – 32 тысячи, на 64-х битный – 64 тысячи

Ха-ха-ха! Посмеялся от души!

Спасибо. прчитвал с интересом!
61. Aleksey_3 31.12.12 06:56 Сейчас в теме
12) В СКД источники данных работают только в 14 релизе платформы.


Т.е. в 15 и выше уже не работает?

Или все таки "В СКД источники данных работают начиная с версии 8.2.14"
62. Flashill 994 31.12.12 12:26 Сейчас в теме
(61) Aleksey_3, все верно - начиная с версии 8.2.14.
63. AlexeyFreeLife 17.01.13 10:09 Сейчас в теме
Андрей, скажите пожалуйста, у Вас получилось рассчитать ресурсы регистров расчета с помощью общего модуля?
У меня что-то упорно не получается:) Там не было каких-то особенностей, по сравнению с тем, что написано в книге (листинг) общего модуля ПроведениеРасчетов ???
64. Flashill 994 17.01.13 10:48 Сейчас в теме
(63) AlexeyFreeLife, честно скажу по регистрам расчета оочень мало информации запомнилось (это была самая тяжелая тема, да и преподаватель был не очень харизматичный), а уже больше года прошло с занятий... Так что увы.
65. AlexeyFreeLife 18.01.13 07:57 Сейчас в теме
Печально :( Спасибо за ответ!
66. Boroda 90 18.01.13 10:28 Сейчас в теме
Подчерпнул ряд полезных советов из публикации. Спасибо!
67. mvgfirst 6 28.03.13 23:28 Сейчас в теме
Запомнить сколько стоят серверные ключи....

Это еще зачем - типа замполнил уже все что можно а свободная память еще осталась!? Запомню ка я еще про серверные ключи! Вот уж супер полезная информация - особенно учитывая что эти два значения более константны чем число Пи )))
68. Angeros 02.03.12 10:10 Сейчас в теме
Есть полезные мысли, но и много очевидного из детсада...
69. Flashill 994 02.03.12 11:08 Сейчас в теме
(2) Angeros, так это тоже хорошо, значит устранил пробелы в своих знаниях. Надеюсь статья поможет устранить их и другим 1С-никам.
70. sytkosa 119 02.03.12 11:23 Сейчас в теме
Молодец. Сразу видно цепкий ум и кропотливость в работе верной дорогой идете.
Новиков; +1 Ответить
71. пользователь 02.03.12 13:08
Сообщение было скрыто модератором.
...
72. Новиков 292 02.03.12 13:14 Сейчас в теме
Молодец! Твоя скрупулезность поможет тебе разобраться во всех тонкостях платформы и типовых конфигурациях. Хорошо что законспектировал все - чтобы не забыть. Я еще маленькие презентации для себя рисовал по Гилевским курсам. Очень помогает контекст поднять исполнения :)

Плюс ставлю к твоей публикации - за светлый ум, желание развиваться (столько курсов уже прошел), и библиотекарскую скрупулезность. Кстати, напиши в комментах - как с работой у тебя сейчас? Помогло ли тебе все это в твоих нынешних делах.
73. Yury1001 1470 02.03.12 13:46 Сейчас в теме
3) я где то читал, что тип Неопределено это когда значение не существует, да и в отладчике проверял переменная до своего определения имеет тип Неопределено.
5) Дальше, к структуре можно обратиться по Ключу, через точку (в соответствии - нельзя), поэтому значение ключа должно не только быть строкой, но и соответствовать требованиям Идентификатора.
6) вообще не понятно без контекста задачи, обо как может быть и так и так, и причём там цикл.
7) ни в коем случае не относится к запросам в условиях и около того!
Дальше не читал – уехал к клиенту

ИМХО: некоторые пункты, без дополнительных пояснений, могут сбить с толку новичков.
74. awk 741 02.03.12 13:48 Сейчас в теме
На курсах был дважды 7.7 и 8.1 Комплексные. Подводных камней раскрывается много, но без знаний на курсах делать нечего.
75. garik79 02.03.12 14:19 Сейчас в теме
(8) Василий Казьмин, Это точно. Перед тем как ехать на курсы, нужен определенный опыт за плечами. Иначе будет просто много информации, которую не будешь знать как применять
Оставьте свое сообщение