Что делать с препроцесорными директивами при портировании модулей


#1

сейчас в 1С-ном коде множество всяких

#Если Сервер
#Если Клиент

при портировании Json в скриптах
пришлось много вычищать такого кода

P.S. Оставлю здесь чтобы вместе с @EvilBeaver подумать


#2

Вкратце, если мы портируем код, то он не обязательно должен копипаститься. Дефайны Клиент и Сервер либо должны быть по умолчанию заявлены в движке всегда, чтобы код работал копипастом из 1С, либо не должны быть заявлены вообще и “вырезаться” препроцессором. Я за второй вариант, т.к. идеологически дефайны Клиент и Сервер чужеродные, их не может быть в скрипте, если только автор скрипта каким-то образом их явно не объявил и не сообщил движку.

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


#4

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

У меня отрабатываются все стандартные 1С-ные клиент/сервер/… и плюсом есть директивы Скрипт/Script, которые позволяют определять, исполняется код внутри 1С или скриптом.

Клиент/Сервер до недавнего времени тоже не использовал, но сейчас начал делать трансляцию скрипта в JavaScript и как-раз тут мне и пригодилось отделение клиентской части кода.

Сами директивы передаются через файл настроек или через командную строку:
–server --thin-client --web-client и т.д.


#5

Вот именно это я и имел в виду. Код препроцессора не надо считать ошибочным (хотя сейчас считается и препроцессор сделан в v2.0) Однако, сами директивы и их конкретное значение Истина или Ложь должно задаваться явно при старте скрипта, каким-то образом. Например, как у Сергея.