Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 6
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )

История благодарностей участнику Vladal ::: Спасибо сказали: 48 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
04.06.19, 10:05 Как прекратить начисление по исполнительным листам ?
Посмотрел в своей УТП.
Банится только форма документа.
В модулях регистра расчета ПлановыеУдержанияРаботниковОрганизаций нет никаких проверок.

Скорее всего это единичный случай.
Можно снимать дату запрета, корректировать документ и снова устанавливать запрет.
Или автоматически заполнить документ КорректировкаЗаписейРегистров по движениям выбранного ИЛ (сторнирующие записи) и следующей строкой внести расчет с правильным сроком.

Я работал в организации, где ИЛ приходили массово - алименты, кредиты, штрафы, - ИЛ прошлых периодов не банил, оставили на ответственности бухгалтера, потому что она отчитывалась об удержаниях перед исполнительной службой.
sasha007,
03.05.19, 10:15 RLS по к автору документа по табличной части справочника Пользователи
Решил, изменив архитектуру. Тот случай, когда действительно надо переписать.

Из справочника Пользователи убрал табличную часть, подчистил все эти подписки и обработчики ПередЗаписью/ПриЗаписи, попытки-шмопытки, исключения-шмиключения.

Добавил регистр сведений ПодчиненныеПользователи с измерениями Руководитель и Подчиненный, куда записал всю эту структуру, которая обновляется при изменении пользователей.

А в RLS изменил правило используя тот же шаблон:
...
#ПоЗначениямРасширенный("Документ.ЗаявкаНаПлатеж", "","",
"внутреннее Соединение РегистрСведений.ПодчиненныеПользователи КАК Т2 ПО (Т.Автор = Т2.Подчиненный И Т2.Руководитель=&ТекущийПользователь)",
...


Теперь то, что и задумывалось: создатель заявки видит только свои документы, его руководитель видит свои и документы всех своих подчиненных.
andr_andrey, Vofka,
18.04.19, 15:21 Работа с синонимом реквизита шапки документа
Цитата(nysysimara @ 18.04.19, 10:28) *
Каюсь, периодически балуюсь FormEx-ом

И небось, там уже есть консоль запросов?
leonid_gun,
18.04.19, 9:08 Работа с синонимом реквизита шапки документа
Цитата(leonid_gun @ 17.04.19, 21:00) *
Вы предлагаете разобрать Идентификатор документа на подобие синонима. Но мне необходимо разобраться в механизме обращения к синониму и комментарию реквизитов шапки документа, которые прямо указаны в конфигурации.

Если Вы заметили, у меня два варианта. Первый из них как раз из метаданных.
Читая метаданные, можно найти Синоним. Но если он не заполнен? Или просто пришла таблица значений и её надо "красиво оформить" - тогда по идентификатору можно получить синоним.
В принципе, применяемые методы те же и мой код подходит для 7.7.

Цитата(leonid_gun @ 17.04.19, 22:11) *
Попробовал обратится к реквизиту шапки документа через
РеквДок = Метаданные.Документ("МойДок").РеквизитШапки(НомерРеквШапки);

где НомерРеквШапки просто номер по порядку, так как он записан в Конфигураторе, и выводит синоним, если поле Синоним не заполнен, тогда Идентификатор.


НомерРеквШапки можно получить в цикле перебором. или по имени реквизита, как это сделано в глобальном модуле глЕстьРеквизитШапки.
В отладчике посмотрите все доступные поля для этого элемента (имя, синоним, тип и т.д.)

// Перебор общих реквизитов документов 
Для ИндРекв = 1 по Метаданные.ОбщийРеквизитДокумента() Цикл
    Сообщить("- общий реквизит: " + Метаданные.ОбщийРеквизитДокумента(ИндРекв).Идентификатор + ", синоним: " + Метаданные.ОбщийРеквизитДокумента(ИндРекв).Синоним);
КонецЦикла;

// Перебор документов в цикле
Для Индекс = 1 по Метаданные.Документ() Цикл
    ИдентДока = Метаданные.Документ(Индекс).Идентификатор;
    Сообщить("Документ " + ИдентДока);
    Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитШапки() Цикл
        Сообщить("- реквизит шапки: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Идентификатор
            + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Синоним);
    КонецЦикла;
    Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти() Цикл
        Сообщить("- реквизит таблицы: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Идентификатор
            + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Синоним);
    КонецЦикла;
КонецЦикла;


Для конкретного документа "МойДокумент" нужно в примере написать ИдентДока = "МойДокумент". Например:

ИдентДока = "МойДок";
Сообщить("Документ " + ИдентДока);
Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитШапки() Цикл
    Сообщить("- реквизит шапки: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Идентификатор
        + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Синоним);
КонецЦикла;
Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти() Цикл
    Сообщить("- реквизит таблицы: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Идентификатор
        + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Синоним);
КонецЦикла;


Еще ознакомьтесь с https://infostart.ru/public/65108/

Цитата(leonid_gun @ 17.04.19, 21:00) *
У меня ТиС 7.70.032.

Надо было название конфы и версию указывать в стартовом сообщении. Об этом напоминает всплывающий баннер с правилами оформления.

Цитата(nysysimara @ 18.04.19, 9:46) *
Если я не ошибаюсь в FormEx есть возможность обратится к Синониму Атрибута Формы.
Кладовочка АЛьФа

Формекс классная штука. Но она как наркотик.

leonid_gun,
17.04.19, 16:23 Работа с синонимом реквизита шапки документа
Правильно ли я понимаю, что синоним реквизита должен быть заполнен в метаданных?
Тогда по метаданным в цикле и прочитать синоним

Не знаю, что у Вас - УФ или ОП, есть кусочек из кода для обычного приложения:

    МетаданныеДокумента = Источник.Метаданные();
    
    // Проверка по реквизитам шапки

    Для Каждого РеквДок из МетаданныеДокумента.Реквизиты Цикл
        Сообщить(РеквДок.Синоним);
    КонецЦикла;
    
    // Проверка по табличным частям

    Для каждого ТабЧасть Из МетаданныеДокумента.ТабличныеЧасти Цикл
        Для каждого КолонкаТЧ Из ТабЧасть.Реквизиты Цикл
            Сообщить(КолонкаТЧ.Синоним);
        КонецЦикла;
    КонецЦикла;


Для УФ будет немного иной подход.

Более подробно смотрите мои ответы в этой теме на Мисте: https://forum.mista.ru/topic.php?id=736319

-------------------------------------------------------------------------------------------------------------

А вот факультативно занимался подобным, формируя синонимы реквизитов. Функция СформироватьСиноним()
тоже моя публикация: https://infostart.ru/public/162834/

// Формирует синоним переменной.
// Пример: на входе "ИмяПеременнойАБВГ", на выходе "Имя переменной АБВГ"
//
// Параметры
// ИмяРеквизита - Строка. Имя переменной, имя колонки таблицы
//
// Возвращаемое значение:
// Строка - Представление переменной
//
Функция СформироватьСиноним(ИмяРеквизита)
    
    Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;
    
    Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));
    ДлинаСтроки = СтрДлина(ИмяРеквизита);
    Для ъ=2 По ДлинаСтроки Цикл
        Символ = Сред(ИмяРеквизита, ъ, 1);
        ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
        СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
        Прописная = Символ = ВРег(Символ);
        ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
        СледПрописная = СледСимвол = ВРег(СледСимвол);
        
        // Варианты:
        Если НЕ ПредПрописная И Прописная Тогда
            Синоним = Синоним + " " + Символ;
        ИначеЕсли Прописная И НЕ СледПрописная Тогда
            Синоним = Синоним + " " + Символ;
        Иначе
            Синоним = Синоним + Символ;
        Конецесли;
    КонецЦикла;
    
    Возврат Синоним;
    
КонецФункции // СформироватьСиноним()


Тогда было интересное обсуждение, в комментариях предложили еще несколько вариантов и один парень собрал все алгоритмы в одной обработке:
https://infostart.ru/public/196681/

Оттуда же самый изящный способ:

Функция Синонимайзер(Имя, Ответ = "", Стэйт = 7, б = "") Экспорт
    Для ё = 1 По СтрДлина(Имя) Цикл
        а = Сред(Имя, ё, 1);
        Стэйт = (НРег(а) <> а) * 4 + Цел(Стэйт / 2);
        Ответ = Ответ + ?(Стэйт = 2, НРег(б), ?(ё = 2, ВРег(б), б)) + ?(Стэйт = 4 ИЛИ Стэйт = 5, " ", "");
        б = а
    КонецЦикла;
    Возврат Ответ + б
КонецФункции
leonid_gun,
17.04.19, 16:03 Аналитик-консультант 1с
Есть еще один индикатор, но про зарплаты разработчиков:
https://jobs.dou.ua/salaries/
Kateryna6789,
17.04.19, 16:01 Реализовать автоматическое выполнение задач для данного исполнителя
Будет хорошим тоном написать, как я решил эту проблему.

В пустой базе "сферический конь в вакууме" работает так, как мне надо, значит я на верном пути.
В рабочей конфе тоже все отрабатывает, если закрывать задачу непосредственно самой задачей
Задача.ВыполнитьЗадачу(); вместо вызова модуля БизнесПроцессыИЗадачиВызовСервера.ВыполнитьЗадачу(Задача.Ссылка, Истина);.
Но при этом все равно валилась ошибка об измененном объекте и несоответствии версий.
Попробовал записывать задачу перед закрытием, ожидаемого эффекта не было, ошибка осталась, зато отладчик Задача.Ссылка.УникальныйИдентификатор() показывал, что создаются разные задачи и к ним потом рекурсивно обращается метод ВыполнитьЗадачу().

Ок.
Но при выходе из каждой итерации рекурсии каждая из задач оказывалась с признаком Выполнена, и соответственно в модуле самой задачи не проходила проверку по условию:
...
ИначеЕсли НЕ ПометкаУдаления И ИсходныеРеквизиты.Выполнена И Выполнена Тогда
    ОбщегоНазначения.СообщитьПользователю(
        НСтр("ru='Эта задача уже была выполнена ранее.';en='This task has already been done earlier.'"),,,, Отказ);
    Возврат;
КонецЕсли;


Нужен был какой-то признак для игнора этой проверки. Добавил свойство Автозакрытие в ДополнительныеСвойства и всё получилось!

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


А в модуле задачи ПередЗаписью читаю, есть ли этот признак и вызываю проверку:
ИначеЕсли НЕ ПометкаУдаления И ИсходныеРеквизиты.Выполнена И Выполнена 
    И НЕ ЭтоАвтоЗакрытие Тогда                                          // При автозакрытии из БП не проводить эту проверку
    ОбщегоНазначения.СообщитьПользователю(
        НСтр("ru='Эта задача уже была выполнена ранее.';en='This task has already been done earlier.'"),,,, Отказ);
    Возврат;
КонецЕсли;


Всё работает, все счастливы.
Vofka,
16.04.19, 19:58 Индесация базы 1Сv8 под MS SQL - server 2014
Цитата(george_smith @ 16.04.19, 17:45) *
Думал, что через sql-сервер это более эффективно.

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


george_smith @ Сегодня, 17:45 * ,
А модель восстановления базы какая?
Цитата(andr_andrey @ 16.04.19, 17:01) *
Хорошая ссылка, чтобы выкинуть свои велосипеды.


к той ссылке
https://github.com/Microsoft/tigertoolbox/t...tiveIndexDefrag

добавьте и этот сборник:
https://github.com/Microsoft/tigertoolbox/t...tenanceSolution
george_smith,
16.04.19, 12:02 Индесация базы 1Сv8 под MS SQL - server 2014
0. Какая версия SQL-сервера?

2.
Цитата(george_smith @ 16.04.19, 11:13) *
База 1Сv8.3 под MS SQL (mdf - файл весит около 15 gb., log урезанный до 1 gb.).

А реальный размер базы каков? Что говорит об этом сам сервер?

Цитата(george_smith @ 16.04.19, 11:13) *
После Rebuild Indexes ситуация не изменилась. Запрос sys.dm_db_index_physical_stats показал то же самое.
Подскажите как победить высокий процент фрагментированных индексов? Может через Reorganize Indexes? Чем эти два способа отличаются.


Для начала нужно понимать, что файл индексов содержит b-tree. некое дерево, в котором располагаются ссылки на записи в таблице или на другие ветки дерева.
Reorganize Indexes - Упорядочивает страницы в файле индекса, аналогично дефрагментации файлов на диске. Практически "прозрачно" для работы пользователей.
Rebuild Indexes - удаляет существующее дерево и читаете все записи, создавая новое дерево непосредственно из данных. Эта операция более дорогостоящая чем реорганизация: занимает время, место на диске, но взамен можно получить более-менее оптимизированное дерево индексов.
Обе операции не рекомендуется делать при пороге фрагментации меньше 5%, некоторые рекомендуют этот порог повысить до 10%.

3.
Цитата(george_smith @ 16.04.19, 11:13) *
После Rebuild Indexes ситуация не изменилась.

Делали ТиИ средствами 1С? С пересчетом итогов и реиндексацией? Период рассчитанных итогов актуальный
Как это повлияло на статистику индексов?

Узнайте, какие таблицы БД имеют самые фрагментированные индексы.
Какие данные они представляют в 1С с помощью метода ПолучитьСтруктуруХраненияБазыДанных (напишите или поищите готовую обработку).
Наверно это будет регистр бухгалтерии Хозрасчетный и его виртуальные таблицы?

1.
Цитата(george_smith @ 16.04.19, 11:13) *
Хочу увеличить производительность системы "Управление торговым предприятием для Украины", редакция 1.2. (1.2.48.1)

И все-таки для начала бы сделать регламентные операции средствами 1С - кофигурации: закрытие месяца, актуализация рассчитанных итогов; платформы: ТиИ...

4. Вот еще нашел у Майкрософт
https://docs.microsoft.com/en-us/sql/relati...sql-server-2017

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

Да уж... хорошо копнул. У Майкрософт уже есть, наверняка лучше моего )))
https://github.com/Microsoft/tigertoolbox/t...tiveIndexDefrag
andr_andrey, george_smith,
16.04.19, 8:58 Проверка точки маршрута перестала работать в другой локали
Проблема решилась так же внезапно, как и появилась. После обновления платформы на 8.3.13.1513 все корректно отрабатывает.

Сейчас условие отрабатывает нормально в любой локали:
Если ТочкаМаршрутаТекущейЗадачи <> 
        ПредопределенноеЗначение("БизнесПроцесс.Исполнение.ТочкаМаршрута.Исполнить") Тогда
Представление точки маршрута на английском, модуль и бизнес-процесс так же на поддержке... Кроме карты - та с возможностью редактирования и у элементов английские синонимы.
Acid, Vidocq05, Vofka,
25.01.19, 15:45 Изменения в конфигурации пропадают на следующий день
Встречал такое дважды:
1. У всех, кроме одного, нормально обновляется в хранилище, у того то пустые формы попадут и пустой модуль, то еще какие глюки.
Причина: он обновлял демонически в своей тестовой базе.

Проверьте и вашего деятеля. Мы просто сделали эксперимент, при нём, и ситуация воспроизвелась.

2. на ворованной (патченной) платформе. Была ситуация: в конфигураторе правлю отчет, демонически обновляю, изменений нет. Чищу кеш, перезапуск предприятия и конфигуратора - в предприятии есть, в конфигураторе нет.

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

А, это было на PosgreSQL. Больше нигде не встречал такое поведение.

Такие дела.
Acid,
20.01.19, 15:57 Оплата ПДФО сотрудников по разным счетам налоговых инспекций
eact @ 18.01.19, 10:50 * ,
Видел вариант решения: в справочнике сотрудников создали папки с регионами, куда их и помещали. В отчетах добавили дополнительный отбор, где указывался необходимый регион.
eact,
27.11.18, 23:51 Как сменить булевое значение заполнения по умолчанию на булевую константу?
Цитата(Gigi @ 27.11.18, 20:29) *
А константа это не элемент конфигурации?

Элемент. А вот её значение - в области пользовательских данных, а не конфигуратора. Сейчас значение одно, через час другое. А если это значение перечисления, предопределенный элемент справочника, плана счетов или ПВХ, то к нему есть доступ из свойств автозаполнения.
Цитата(Gigi @ 27.11.18, 20:29) *
Пока все внимание акцентирую только на кодинг.

Да. Понимание архитектуры 1С 8 облегчит работу.
Цитата(Gigi @ 27.11.18, 20:29) *
А константа это не элемент конфигурации? Так же как на пример перечисление?

Константа и перечисления - объекты конфигурации.
Только значение перечисления задано в конфигураторе, а значение константы задано в пользовательском режиме. Это если "на пальцах".

Цитата(Gigi @ 27.11.18, 20:29) *
Но суть в том, что если константа "Обслуживание" имеет значение Истина тогда база грузиться, а если ложь то нет.
...
Конечно разумнее было бы создать константу с именем не "Обслуживание", а "Отключение" .. это было бы уместнее к значению по умолчанию.

Да. Это хорошо, что пришли к такому выводу.
Цитата(Gigi @ 27.11.18, 20:29) *
В противном случае придется в других процедурах везде менять. Что думаю и придется делать.
Ладно .. это так ..для ясного понимания негодования...
спасибо

Да, такое тоже бывает, когда надо переписывать код на оптимальный.

Суть негодования понятна. Особенно, когда "бросили на амбразуру" и плыви, как хочешь.
Gigi,
27.11.18, 17:29 Как сменить булевое значение заполнения по умолчанию на булевую константу?
Цитата(Gigi @ 27.11.18, 8:19) *
Ну конечно ... "создайте" ... "доработайте" А в опциях просто сменить значение заполнения константы по умолчанию без "создайте/доработайте" это конечно невозможно.

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

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

Цитата(Vofka @ 27.11.18, 16:36) *
Зачем вы так жестоко с человеком?

Я не хотел.


Цитата(Gigi @ 27.11.18, 10:09) *
просто длина одного шага вперед должна быть 100 см, а не 95.

Либо нестандартизированная линейка. Как, например, дешевая китайская рулетка, шкала которой не совпадает с эталоном.
Может, Вы ожидаете неоправданно большего от системы, которая рассчитана под другие задачи.
Так что разработчики 1С сделали километр из 1000 эталонных метров, а Вы ожидаете от этого километра 1024 "китайских" метра.
Увы.

Цитата(Gigi @ 25.11.18, 12:43) *
Дело в том, что когда создаешь булевый реквизит объекта, там есть опция "ЗначениеЗаполнения". Обычно по умолчанию всегда стоит Ложь. И поэтому есть возможность сменить на Истину. А вот когда создаешь тот же булевый тип но константу, такая опция как "ЗначениеЗаполнения", и вовсе отсутствует. ПОЧЕМУ? По крайней мере че то ее не нахожу.
А нужно что бы значение созданной булевой константы было не Ложь, а ИСТИНА!
Никто не подскажет пути как это сделать?
Буду опять признателен!

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

Вот пример:

Процедура ПриОткрытии()
    
    Если ЭтоНовый() Тогда
        ЗначениеРеквизита = Константы.БулеваяКонстанта.Получить();
        НовыйРеквизит = ЗначениеРеквизита;
    КонецЕсли;
    
КонецПроцедуры


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


Цитата(Gigi @ 27.11.18, 10:09) *
Просто кое где не до конца удобна.

Зато не надо в notepad.exe или nano писать текст программы и компилировать его из командной строки )))
Gigi,
26.11.18, 15:41 Как сменить булевое значение заполнения по умолчанию на булевую константу?
з - зубожиння


Создайте свою обработку или доработайте обработчик обновления информационной базы, который бы заполнял значения новых реквизитов.
Gigi,
24.10.18, 20:05 Получение данных с COM порта
Цитата(SeverinPasha @ 23.10.18, 13:29) *
Если учесть, если на карте имеется номер 0000255740 (десятеричный) и 039,01335 (некий ТЕКСТОВЫЙ код).
Помогите связать результат вывода с данными которые по идее должны выводиться(написаны на карте)


Супер! Я ждал этого от Вас!
Алгоритм был найден на форуме разработчиков ПО работы с RFID-метками.
Процедуры конвертации чисел между системами счислений найдены на Мисте или Инфостарте.

Процедура КнопкаСчитатьRFIDНажатие(Элемент)
    
    СчитанноеЗначение = "";
    Результат = ВвестиСтроку(СчитанноеЗначение, "Считайте данные карточки RFID", 10, Ложь);
    Если НЕ Результат Тогда
        Возврат;
    КонецЕсли;
    
    // Преобразование 10-ричного серийного номера dec1 (0000255740) в 10-ричные данные (039,01335) dec2, хранящиеся в памяти карточки.
    // Алгоритм преобразования:
    // dec1 преобразовать в hex
    // Старшие 4 байта hex составляют целую часть dec2,
    // младшие 4 байта hex составляют дробную часть dec2.
    
    ДанныеHEX = Прав("00000000" + ОбщегоНазначения.Из_10_В_Любую(СчитанноеЗначение, 16), 8);     // с лидирующими нолями
    ЦелаяЧасть = Прав("000" + ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 1, 4), 16), 3);     // старшие 4 байта в 10-ричное
    ДробнаяЧасть = Прав("00000" + Формат(ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 5, 4), 16), "ЧГ=0"), 5); // младшие 4 байта в дробную часть
    
    НомерДес1 = СчитанноеЗначение;
    НомерДес2 = "" + ЦелаяЧасть + "," + ДробнаяЧасть;
    
КонецПроцедуры


процедуры из модуля ОбщегоНазначения:

Функция Из_10_В_Любую(Знач Значение=0, Нотация=36) Экспорт
    
    Если Нотация <= 0 Тогда
        Возврат ""
    КонецЕсли;
    Значение = Число(Значение);
    Если Значение <= 0 Тогда
        Возврат "0"
    КонецЕсли;
    Значение = Цел(Значение);
    Результат = "";
    Пока Значение>0 Цикл
        Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Значение%Нотация + 1, 1) + Результат;
        Значение = Цел(Значение/Нотация);
    КонецЦикла;
    
    Возврат Результат;
    
КонецФункции

Функция Из_Любой_В_10(Знач Значение="0", Нотация=36) Экспорт
    
    Если Нотация <= 0 Тогда
        Возврат 0
    КонецЕсли;
    Значение = СокрЛП(Значение);
    Если Значение = "0" Тогда
        Возврат 0
    КонецЕсли;
    Результат = 0;
    Длина = СтрДлина(Значение);
    Для Х = 1 По Длина Цикл
        М = 1;
        Для У = 1 По Длина-Х Цикл
            М = М*Нотация
        КонецЦикла;
        Результат = Результат + (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Сред(Значение, Х, 1)) - 1)*М;
    КонецЦикла;
    
    Возврат Окр(Результат);
    
КонецФункции
SeverinPasha,
11.10.18, 5:08 Программист 1С, Одесса
Цитата(Flexy @ 09.10.18, 21:50) *
В старт посте 12К. Я что-то пропустил???
Это ЗП на испытательном сроке. Рассуждаю, что после испытательного должно быть около 16 или выше.

Э.... То и на испытательном сроке надо работать не с 9 до 18, а с 9 до 15?

Цитата(Flexy @ 09.10.18, 22:45) *
От куда такие вакансии

// да тут не только мягкий знак, тут и пробел западает. Я не придираюсь. Отнюдь.

Вот откуда: из рынка
https://www.work.ua/jobs-программист+1с/

Сегодня в топе обычные торговцы - "Червоний Маркет", 35 тыс, торгуют мелочевкой по низким ценам. Летом предлагали еще по 30 тыс.

Листаем дальше
- Эко Маркет. Белая зарплата, 30-35 тыс. Считайте ФОТ сами.
- Мета Капитал уже в топ вылез. Наверно робот Ворка его поднял. 45.
- Агромарс, УПП, от 35. Давно не следил, на УПП это мало или норм?
- Какая-то жадная галера, до 20 грн предлагает. Там точно нужны вьюноши с горящими глазами и широкими ушами, чтобы по ним поездить.
- Кривой Рог, недоработа в Харькове - в пределах 20, не рассматриваем.
- Одесса. Витол. 35 грн в месяц.
- опять Харьков, 12500, и из тех 12 тыс скромно 4 на карточку.
- Теллур Харьков. 10 тыс. Это позорище.
- ВиЯр - торговля, 30 грн.
- галера Фортолис - пишут 30, но наверно при условии закрытия 700 часов в месяц. Ладно, утрирую, меньше.
- КТ Украина, производитель инструментов. 30 тыс. Наверно УПП или что похуже - УТП.
- еще одна галера ИТ-фабрика, 40 в потолке.
- ювелирные магазины ищут программиста-консультанта на 25 тыс.
- Адамакс, оптовая торговля, дистрибьюция - ищет младшего специалиста-падавана под присмотр ведущего программиста, 20 тыс.
- Розетка. 52 тыс. Но зато какие требования! Между прочим, довольно интересный там зоопарк технологий.

Это Киев. Учитывая стоимость съемного жилья в Киеве и Одессе - они на равных.

Дальше.
- ломбард Благо - 40 тыс на УТ. Каждые 3-4 месяца эта вакансия висит месяц
- ТПК Алеф - х.з. что там, тоже 40 тыс.
- АВК - кондитерский концерн. Последний раз видел от них вакансию в мае, повторно в июле. УПП, 45 было тогда. Сейчас не пишут.
- завод меллопластиковых окон как-то вяло ищет на 20 тыс, может найдется студент из Одессы, который месяца 3 поработает на 12 с бесплатными обедами и найдет ту вакансию
- дальше какие-то ФОПы ищут в Полтаву и Киев по 15 и 17 тыс, скорее всего субподряд на распилы.
- торговая компания Будпостач - 40 тыс

Вот откуда эти деньги?
Да просто кто жмется, кто не жмется.

Если бы у нас была экономика стабильная как в Германии, Чехии, Польще, то и знали бы, что, например, рабочий на заводе - 20-22 тыс в месяц получает, программист 25-30, инженер на заводе до 40 и т.д. В любом городе, на любом заводе.
Вкруговую примерно одинаковые цены на рабочую силу.

А пока мы наблюдаем местами нормальных контор, и пока еще много охреневших бояр, считающих "да я вот вам, мерзким людишкам, РАБОТУ ДАЮ!!!!1111адын"
awp, cos12, Мичман Харитонов,
07.10.18, 9:53 Программист 1С, Одесса
-тся/-ться,

Я нанимаю Вас на 8000 грн, это аж в 2 раза дороже минимальной зарплаты.
awp,
03.10.18, 9:36 Как Свернуть даные по нескольким значениям группировочных колонок
Цитата(Sirius83 @ 03.10.18, 0:29) *
Например Строка Код 33 должна включать в себя 34 и 37.

Добавьте свою новую колонку, куда для строк с кодами 33, 34 и 37 будете помещать условный идентификатор "Код33", а для остальных - их обычный. Потом эту колонку включить в свертку вместо той, по которой сейчас сворачивается.

Как пример: в цикле перебрать все строки таблицы и прописать:

ТЗ.ДобавитьКолонку("ГруппировкаКод");
...
цикл по перебору ...

    Если Код = 33 Или Код = 34 Или Код = 37 Тогда
        СтрокаТЗ.ГруппировкаКод = "33";
        СтрокаТЗ.Вид = "Вина виноградні";
    Иначе
        СтрокаТЗ.ГруппировкаКод = СтрокаТЗ.Код;
    КонецЕсли;

КонецЦикла;

// Было: (как пример)
//ТЗ.Свернуть("Код, Вид", "НачОстаток, реализация1, реализация2, реализация3");

// Заменить на:
ТЗ.Свернуть("ГруппировкаКод, Вид", "НачОстаток, реализация1, реализация2, реализация3");


Затем отсортировать и вывести таблицу.

Но это если просто свернуть.
А если свернуть по группировке, сохраняя данные вложенных строк (34 и 37), то надо подумать чуть больше.
Sirius83,
28.09.18, 13:22 Получить две последние цены товара
Смотрите, пользуйтесь.

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ втНоменклатура
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Родитель = &Родитель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЦеныНоменклатуры.Период КАК Период,
    ЦеныНоменклатуры.Активность,
    ЦеныНоменклатуры.ТипЦен,
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.Цена КАК Цена
ПОМЕСТИТЬ втЦеныНоменклатуры
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.Период <= &ДатаПолученияЦен
    И ЦеныНоменклатуры.Активность
    И ЦеныНоменклатуры.ТипЦен = &ТипЦен
    И ЦеныНоменклатуры.Номенклатура В
            (ВЫБРАТЬ
                втНоменклатура.Номенклатура
            ИЗ
                втНоменклатура КАК втНоменклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втНоменклатура.Номенклатура КАК Номенклатура,
    ЕСТЬNULL(втЦеныНоменклатуры.Цена, 0) КАК ПоследняяЦена,
    ЕСТЬNULL(втЦеныНоменклатуры.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаПосленейЦены
ПОМЕСТИТЬ втПоследняяЦена
ИЗ
    втНоменклатура КАК втНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЦеныНоменклатуры КАК втЦеныНоменклатуры
        ПО втНоменклатура.Номенклатура = втЦеныНоменклатуры.Номенклатура
            И (втЦеныНоменклатуры.Период В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    втЦеныНоменклатуры.Период КАК Период
                ИЗ
                    втЦеныНоменклатуры КАК втЦеныНоменклатуры
                ГДЕ
                    втЦеныНоменклатуры.Период <= &ДатаПолученияЦен
                    И втЦеныНоменклатуры.Номенклатура = втНоменклатура.Номенклатура
                УПОРЯДОЧИТЬ ПО
                    Период УБЫВ))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втПоследняяЦена.Номенклатура КАК Номенклатура,
    втПоследняяЦена.ПоследняяЦена КАК ПоследняяЦена,
    втПоследняяЦена.ДатаПосленейЦены КАК ДатаПосленейЦены,
    ЕСТЬNULL(втЦеныНоменклатуры.Цена, 0) КАК ПредпоследняяЦена,
    ЕСТЬNULL(втЦеныНоменклатуры.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаПредпоследнейЦены
ИЗ
    втПоследняяЦена КАК втПоследняяЦена
        ЛЕВОЕ СОЕДИНЕНИЕ втЦеныНоменклатуры КАК втЦеныНоменклатуры
        ПО втПоследняяЦена.Номенклатура = втЦеныНоменклатуры.Номенклатура
            И (втЦеныНоменклатуры.Период В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    втЦеныНоменклатуры.Период КАК Период
                ИЗ
                    втЦеныНоменклатуры КАК втЦеныНоменклатуры
                ГДЕ
                    втЦеныНоменклатуры.Период < втПоследняяЦена.ДатаПосленейЦены
                    И втЦеныНоменклатуры.Номенклатура = втПоследняяЦена.Номенклатура
                УПОРЯДОЧИТЬ ПО
                    Период УБЫВ))

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    ДатаПосленейЦены,
    ДатаПредпоследнейЦены
АВТОУПОРЯДОЧИВАНИЕ


В результате будет таблица с последними двумя ценами номенклатуры с указанием дат установки цены.

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

cos12,
26.09.18, 9:14 Подключение магнитного ридера для 1С
Цитата(SeverinPasha @ 25.09.18, 10:06) *
Но лично меня сйчас больше интересует программный код для работы считки с 1с.

Считыватели могут работать по-разному.
- Один будет постоянно слать в ком-порт своё состояние:
- нули если нет ничего;
- номер карты (тот самый серийный номер из 13 символов);
- ИЛИ данные карты (та цифра в формате ХХХ,ХХХХХХ);
- Другой будет слать однократно только при изменении состояния:
- либо 0 либо номер карты
- Третий будет слать, но ему надо в ком-порт отправить некую команду
(хорошо, если это RS232, хуже если это Dallas или RS485 - те заточены для обмена данными железяками напрямую без компьтера).

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

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

Это лирика.

Цитата(awp @ 25.09.18, 10:09) *
Думаю ПО есть, но оно платное.

Или закрытое, и заточено только на непосредственную запись данных карточек в память контролера считывателя.

Цитата(andr_andrey @ 25.09.18, 9:39) *
У нас тоже был настроен для обмена по COM-порту, но предварительно настраивал техник, после этого тупо опрос по протоколу описанному в документации.

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

Цитата(SeverinPasha @ 25.09.18, 10:28) *
А поделиться из солидарности Вы конечно же не сможеТЕ?)))

Конечно, могу. Но не имею права распространять готовый продукт - я подписал соглашение с работодателем.

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



Если есть конкретный вопрос, я дам конкретный ответ и постараюсь помочь решить эту проблему.
Такой вариант устроит?
andr_andrey, SeverinPasha,
30.08.18, 9:44 Редактирование процедуры в модуле объекта документа не изменяет
Цитата(Oleksa_Kan @ 30.08.18, 9:51) *
не нажал "Обновить конфигурацию баз данных".

Цитата(Vladal @ 30.08.18, 8:40) *
Навскидку - Вы сделали это в своей копии базы.

О!
Я был почти у цели.
... теряю навыки, старею...
Oleksa_Kan,
30.08.18, 7:40 Редактирование процедуры в модуле объекта документа не изменяет
Навскидку - Вы сделали это в своей копии базы.
Либо если еще вызов в других местах.
Поищите текст Документы.ЗаказПоставщику.Создать.
Может, подписка срабатывает.

Скоро смогу открыть УТП и посмотреть, что там такое.
Oleksa_Kan,
02.08.18, 12:24 УТП. Документ Ввод в эксплуатацию ОС не списывает партии
Разобрался.

Причина: Поступившее оборудование записали в ТЧ Товары, а надо было в ТЧ Оборудование. Хотя и вид операции документа был Оборудование.

Решение: доработал ПТиУ так, чтобы при выборе операции Оборудование номенклатура с видом номенклатуры Оборудование переносилась из ТЧ Товары в ТЧ Оборудование.
Добавил соответствующие проверки номенклатуры для ТЧ Товары и Оборудование, как в типовой проверке ТЧ Услуги.

Vofka,
07.07.17, 16:55 "Вконтакте", "Одноклассники", "Яндекс" та "1С" заблокують - указ Порошенка
Цитата(Acid @ 06.07.17, 10:36) *
Ну если вспомнить как в этот медок, можно сказать "примусово" загоняли различными методами, и при поддержке властей.

И при поддержки тех, неправильных властей.
Цитата(Acid @ 06.07.17, 11:59) *
Причина банальна - передел кормового места.

Есть мнение, что "медок" принадлежит бывшему в 2012 году министру доходов и сборов. Я сам лично не видел документы, но версия звучит убедительно.
XBrut,

2 страниц V   1 2 >
RSS Текстовая версия Сейчас: 25.06.19, 16:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне