Макаренко Игорь

352
Рейтинг

Kashemir
Игорь Макаренко



  •   Регистрация: 09.06.2009 (14 лет назад)

  •   Был(а) на сайте: 18.01.2023

Подписчики 6

Группы

Профессиональный разработчик

Рейтинг 352

Отладка внешних печатных форм

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) Инструментарий разработчика

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

1 стартмани

16.09.2014    12738    68    Kashemir    8       

5

Английский по дороге на работу

Отчеты и формы Для всех Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Конфигурация (md, cf) Разное

Если вы чувствуете, что зря тратите время за рулем/без руля по дороге на работу и хотите его занять изучением языков - возможно, вас заинтересует мой опыт. Метод приемлем для любого языка.

1 стартмани

21.08.2014    24463    49    Kashemir    29       

56

Консоль запросов + ТЗ как параметры

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Украина Абонемент ($m) Внешняя обработка (ert,epf) Инструментарий разработчика

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

2 стартмани

12.11.2010    51161    479    Kashemir    24       

45

Анализ прав / ролей

Инструменты и обработки Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m) Внешняя обработка (ert,epf) Информационная безопасность

Матрица объект/роль, облегчающая анализ основных прав: чтение, изменение, просмотр, редактирование.

1 стартмани

05.11.2010    30442    825    Kashemir    19       

76

Универсальная обработка независимых регистров сведений

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m) Внешняя обработка (ert,epf) Корректировка данных

Получение/создание набора записей независимых регистров сведения для последующей записи/удаления/выгрузки в ХМЛ/регистрации.

11.08.2010    36685    502    Kashemir    20       

87

Комментарии

DevLIFO запросом#18 26.07.19 15:23
(17) Решение в (13) решает поставленную задачу. А итоговая картинка в (10) содержит ошибку - расход от 29.02.2020 должен был по лифо списать партию 15.09.2018.
DevОптимальность таблицы значений от количества строк и колонок#3 24.07.19 19:08
Вариант 1 + добавить индекс по колонке периода и возможно контрагента, зависит от необходимых последующих отборов.
DevГруппировка в запросе#2 24.07.19 19:04
Какие ошибки ? Поле неограниченной длины ?
ПубликацииБизнес-аналитика с помощью Power BI#15 17.07.19 15:44
(14) Не о чем понял, за счет чего. Операции типа печати, не имеющие отражения в бд вряд ли выполняются в некой внешней транзакции и носят прям такой массовый характер. Если действительно проблема имеет место, то пути решения традиционные - отключить либо хотя бы повысить порог эскалации для данной таблицы / пересмотреть архитектуру решения - я не тех эксперт и точнее сказать не могу.
ПубликацииБизнес-аналитика с помощью Power BI#13 17.07.19 11:01
(12) Как вариант можно создать регистр сведений под такие нужды. Допустим с измерениями ТипОперации и произвольный GUID, в ресурсы/реквизиты натолкать все что нужно по параметрам операции.
ПубликацииБизнес-аналитика с помощью Power BI#11 16.07.19 17:03
(10) Я понимаю проблему размера базы, у нас боевая тоже полтора террабайта с тысячей активных пользователей, отсюда и интерес к Вашему решению. Однако так и не понял, что мешает мержить с отбором по таблицам изменений, а не по некому алгоритму регистрации, который сутя из вашей статьи практически дублирует типовой.
Как пример реализации навскидку:
- подняли счетчик отправленных пакетов средствами 1с,
- мержем перетянули все что там ниже либо равно номеру пакета (<>NULL).
- по окончанию приема отправили подтверждение приема средствами 1с (почистив регистрации изменений для пакет ниже/равном счетчику). Новые изменения, сделанные после подъема значения счетчика останутся висеть с NULL номером пакета до следующей перегрузки.
ПубликацииБизнес-аналитика с помощью Power BI#7 15.07.19 15:51
А что помешало использовать механизмы планов обмена для регистрации изменений ?
DevLIFO запросом#13 04.07.19 15:26
(10) Если я правильно понял то так (плюс дальше еще необходимо нулевые партии отбросить)
Код
ВЫБРАТЬ
   "Контрагент" КАК Контрагент,
   ДАТАВРЕМЯ(2017, 9, 27) КАК ДатаСобытия,
   9448.84 КАК Площадь
ПОМЕСТИТЬ ВТ_ПриходНаКонец

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2018, 4, 6),
   1507.06

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2018, 9, 15),
   3208.7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2019, 4, 23),
   122

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2019, 5, 1),
   2100
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   "Контрагент" КАК Контрагент,
   ДАТАВРЕМЯ(2018, 12, 15) КАК ДатаСобытия,
   3208.7 КАК Площадь
ПОМЕСТИТЬ ВТ_РасходНаКонец

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2019, 12, 19),
   2100

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2020, 2, 29),
   122

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Контрагент",
   ДАТАВРЕМЯ(2021, 2, 14),
   10955.9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_РасходНаКонец.Контрагент КАК Контрагент,
   ВТ_РасходНаКонец.ДатаСобытия КАК ДатаСобытия,
   ВТ_РасходНаКонец.Площадь КАК Площадь,
   СУММА(ВТ_РасходНаКонец1.Площадь) КАК ПлощадьРасходНакопительно
ПОМЕСТИТЬ РасходыНакопительно
ИЗ
   ВТ_РасходНаКонец КАК ВТ_РасходНаКонец
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РасходНаКонец КАК ВТ_РасходНаКонец1
      ПО ВТ_РасходНаКонец.Контрагент = ВТ_РасходНаКонец1.Контрагент
         И ВТ_РасходНаКонец.ДатаСобытия <= ВТ_РасходНаКонец1.ДатаСобытия

СГРУППИРОВАТЬ ПО
   ВТ_РасходНаКонец.ДатаСобытия,
   ВТ_РасходНаКонец.Контрагент,
   ВТ_РасходНаКонец.Площадь
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ПриходНаКонец.Контрагент КАК Контрагент,
   ВТ_ПриходНаКонец.ДатаСобытия КАК ДатаСобытия,
   ВТ_ПриходНаКонец.Площадь КАК ПлощадьПоПартии,
   СУММА(ВТ_ПриходНаКонец1.Площадь) КАК ЧастьПлощадиПоПартииДо
ПОМЕСТИТЬ ПартииПриходаНакопительно
ИЗ
   ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец1
      ПО ВТ_ПриходНаКонец.Контрагент = ВТ_ПриходНаКонец1.Контрагент
         И ВТ_ПриходНаКонец.ДатаСобытия >= ВТ_ПриходНаКонец1.ДатаСобытия

СГРУППИРОВАТЬ ПО
   ВТ_ПриходНаКонец.Контрагент,
   ВТ_ПриходНаКонец.ДатаСобытия,
   ВТ_ПриходНаКонец.Площадь
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПлощадиРасходов.Контрагент КАК Контрагент,
   ПлощадиРасходов.ДатаСобытия КАК ДатаСобытия,
   ПлощадиПриходовПоПартиям.ДатаСобытия КАК Партия,
   СУММА(ВЫБОР
         КОГДА ПлощадиРасходов.ИнтервалРасходаПо < ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
            ТОГДА ПлощадиРасходов.ИнтервалРасходаПо
         ИНАЧЕ ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
      КОНЕЦ - ВЫБОР
         КОГДА ПлощадиРасходов.ИнтервалРасходаОт < ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
            ТОГДА ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
         ИНАЧЕ ПлощадиРасходов.ИнтервалРасходаОт
      КОНЕЦ) КАК ПриходПоПартии,
   ПлощадиПриходовПоПартиям.ИнтервалПриходаОт КАК ИнтервалПриходаОт,
   ПлощадиПриходовПоПартиям.ИнтервалПриходаДо КАК ИнтервалПриходаДо,
   ПлощадиРасходов.ИнтервалРасходаОт КАК ИнтервалРасходаОт,
   ПлощадиРасходов.ИнтервалРасходаПо КАК ИнтервалРасходаПо
ИЗ
   (ВЫБРАТЬ
      РасходыНакопительно.Контрагент КАК Контрагент,
      РасходыНакопительно.ДатаСобытия КАК ДатаСобытия,
      РасходыНакопительно.Площадь КАК ПлощадьРасхода,
      РасходыНакопительно.ПлощадьРасходНакопительно - РасходыНакопительно.Площадь КАК ИнтервалРасходаОт,
      РасходыНакопительно.ПлощадьРасходНакопительно КАК ИнтервалРасходаПо
   ИЗ
      РасходыНакопительно КАК РасходыНакопительно) КАК ПлощадиРасходов
      ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
         ПартииПриходаНакопительно.Контрагент КАК Контрагент,
         ПартииПриходаНакопительно.ДатаСобытия КАК ДатаСобытия,
         ПартииПриходаНакопительно.ПлощадьПоПартии КАК ПлощадьПоПартии,
         ПартииПриходаНакопительно.ЧастьПлощадиПоПартииДо - ПартииПриходаНакопительно.ПлощадьПоПартии КАК ИнтервалПриходаОт,
         ПартииПриходаНакопительно.ЧастьПлощадиПоПартииДо КАК ИнтервалПриходаДо
      ИЗ
         ПартииПриходаНакопительно КАК ПартииПриходаНакопительно) КАК ПлощадиПриходовПоПартиям
      ПО ПлощадиРасходов.Контрагент = ПлощадиПриходовПоПартиям.Контрагент
         И ПлощадиРасходов.ИнтервалРасходаПо >= ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
         И ПлощадиРасходов.ИнтервалРасходаОт <= ПлощадиПриходовПоПартиям.ИнтервалПриходаДо

СГРУППИРОВАТЬ ПО
   ПлощадиПриходовПоПартиям.ДатаСобытия,
   ПлощадиРасходов.ДатаСобытия,
   ПлощадиРасходов.Контрагент,
   ПлощадиПриходовПоПартиям.ИнтервалПриходаОт,
   ПлощадиПриходовПоПартиям.ИнтервалПриходаДо,
   ПлощадиРасходов.ИнтервалРасходаОт,
   ПлощадиРасходов.ИнтервалРасходаПо

УПОРЯДОЧИТЬ ПО
   Контрагент,
   ДатаСобытия,
   Партия УБЫВ
ИТОГИ
   СУММА(ПриходПоПартии)
ПО
   ОБЩИЕ,
   Контрагент,
   ДатаСобытия,
   Партия
DevLIFO запросом#12 04.07.19 14:58
(10) Судя по результату на суммы расходов в хронологии надо набрать партии приходов. Но порядок разнесения приходов смущает - 2018...2019...2017. Это опечатка либо же есть еще какое-то условие?
DevLIFO запросом#8 04.07.19 13:13
(7) Задача не ясна. Указаны остатки по состоянию на разные даты или обороты ? Если обороты почему не объединить в одну таблицу, где расход будет с минусом и после строить накопительный итог в ту или другую сторону. Если же остатки то опять же сперва требуется объединить в хронологию остатков, посчитать обороты между всеми неразрывными парами дат обороты и далее работать как с оборотами.

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